home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / tex / lindner / metafont / doc.lzh / MF_MAN.TEX < prev    next >
Encoding:
Text File  |  1992-02-03  |  85.0 KB  |  1,587 lines

  1. % macropackage=lplaing
  2. \documentstyle[twoside,german,mflogo,a4-9]{report}
  3. \pagestyle{headings}
  4. %
  5. \newfont{\mc}{cmr9} % medium caps
  6. \newfont{\bmc}{cmbx9} % bold medium caps
  7. %
  8. \newcommand{\inimf}{{\mc INIMF}}
  9. \newcommand{\gem}{{\mc GEM}}
  10. \newcommand{\tos}{{\mc TOS}}
  11. \newcommand{\gemdos}{{\mc GEM}\-{\mc DOS}}
  12. \newcommand{\bs}{$\backslash$}
  13. \newcommand{\env}[1]{{\mc #1}}
  14. \newcommand{\benv}[1]{{\bmc #1}} % bold env. variable
  15. \newcommand{\file}[1]{{\tt\uppercase{#1}}}  % file name
  16. \newcommand{\bfile}[1]{{\tt\uppercase{#1}}} % bold file name
  17.  
  18.  
  19. %
  20. % Wenn kein "New Font Selection Scheme" (NFSS von Mittelbach/Sch"opf)
  21. % installiert ist, dann mu"s man die Styleoption mflogo aus dem
  22. % \documentstyle rausschmei"sen, die folgenden Definitionen durch
  23. % Entfernen des % aktivieren und darf sich dann dar"uber "argern, da"s
  24. % alle METAFONT-Logos genau gleich gro"s sind, egal, ob sie nun auf der
  25. % Titelseite oder im laufenden Text erscheinen. Wer alte Versionen meiner
  26. % METAFONT-Anleitung kennt, wei"s, da"s dort u.a. bei jeder "Uberschrift, die
  27. % das METAFONT-Logo enth"alt, alle m"oglichen Tricks veranstaltet werden
  28. % mu"sten, um in der "Uberschrift selbst, im Inhaltsverzeichnis und in der
  29. % Kopfzeile auf jeder Seite das Logo im jeweils passenden Schriftschnitt
  30. % anzuw"ahlen. Genau dies ist nun mit dem NFSS nicht mehr n"otig (an dieser
  31. % Stelle auch mal ein gro"ses Dankesch"on an Frank Mittelbach und Rainer Sch"opf
  32. % f"ur ihre riesige Arbeit).
  33. %
  34. % Zur Information: NFSS ist eine Style-Option, die die Fontauswahl von
  35. % LaTeX komplett durch eine neue ersetzt. NFSS ist eine Vorarbeit zu neuen
  36. % LaTeX-Versionen (2.10 oder irgendwann 3.0), um jetzt schon mit einigen
  37. % der neuen M"oglichkeiten arbeiten und experimentieren zu k"onnen. Mit NFSS
  38. % ist es erheblich leichter, neue Fontfamilien (z.B. Pandora-Fonts, AMS-
  39. % Fonts, diverse PostScript-Fonts, oder eben Logos in verschiedenen Gr"o"sen
  40. % und Schnitten) in ein Dokument einzubinden. In bisherigen LaTeX-Versionen
  41. % mu"ste man dazu immer lfonts.tex "andern, wenn die neuen Fonts auch automa-
  42. % tisch ihre Gr"o"se "andern oder z.B. fett erscheinen sollten. Hinzu kam dann
  43. % nat"urlich noch das Erzeugen einer neuen Format-Datei mit IniTeX...
  44. %
  45. % Ein weiterer Vorteil von NFSS ist die Entkopplung der Fontauswahl von
  46. % der Gr"o"senangabe. In LaTeX 2.09 schaltet "\bf\large" nicht etwa auf eine
  47. % gro"se Fettschrift um, sondern auf gro"se "Normalschrift" (Roman) um, weil
  48. % die Gr"o"senauswahl automatisch auch eine Fontauswahl beinhaltet ("\large\bf"
  49. % liefert das Gew"unschte). Au"serdem ist mit NFSS die Fontauswahl nicht ein-
  50. % dimensional, sondern bietet drei voneinander unabh"angige Parameter (wenn
  51. % man von der Gr"o"senangabe mal absieht): family, series und shape, z.B.
  52. % "Computer Modern/medium/normal = cmr" oder "Computer Modern/bold extended/
  53. % italic = cmbxti", oder nat"urlich auch "METAFONT-Logo/bold extended/normal
  54. % = logobf". Man kann nun mit NFSS einstellen, ob man kompatibel zur alten
  55. % LaTeX-L"osung sein will (und damit auch fast alle alten Dokumente ohne
  56. % Probleme "ubersetzen kann), oder ob man die neuen M"oglichkeiten nutzen
  57. % m"ochte, und z.B. mit "\bf\it\large" auf einen fetten, kursiven (!) Schrift-
  58. % schnitt in beispielsweise 12 Punkt Gr"o"se umschaltet. In diesem Fall mu"s
  59. % man ggfs. bei alten Dokumenten ein "oldlfont" bei den Styleoptionen (in
  60. % den eckigen Klammern bei \documenstyle) angeben.
  61. %
  62. % Leider ist auf den beiden METAFONT-Disketten nicht mehr gen"ugend Platz,
  63. % um das NFSS (auf Platten und Disketten meist unter dem Namen "fontsel"
  64. % zu finden) mitzuliefern. Wer es noch nicht besitzt, kann bei mir die
  65. % Diskette 220 (TeX-Makros) oder 020 (AMS-Fonts + NFSS) bestellen (siehe
  66. % Datei DISKLIST.DOC), oder sich das NFSS bei Dante oder bei Stefan Lind-
  67. % ner besorgen oder von einem der vielen per Modem oder Datennetz erreich-
  68. % baren TeX-Server (rusinfo in Stuttgart, dhdurz1 in Heidelberg, Stefan
  69. % Lindners Bagdad-TeX-Server) kopieren.
  70. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  71. %
  72. % \newfont{\logo}{logo12}
  73. % \newcommand{\mf}{{\logo META}\-{\logo FONT}}
  74. %
  75.  
  76. \hfuzz 1.5pt  % Soviel darf es schon mal "uber den rechten Rand hinausragen
  77. \setcounter{secnumdepth}{1} % Nur bis \section durchnumerieren
  78. \setcounter{tocdepth}{1}    % Im Inhaltsverz. nur \chapter und \section
  79. %
  80. \begin{document}
  81. %
  82. %******************************* Titelseite ********************************
  83. %
  84. \title{{\Huge\mf} \\[1.5cm]
  85.   {\normalsize (Version%
  86.   \thanks{Die erste Versionsnummer ist die offizielle Z"ahlung von
  87.    Donald~E.~Knuth, die zweite bezeichnet die aktuelle Implementation
  88.    auf dem Atari~ST}
  89.   2.7 / 2.2)} \\[1.5cm]
  90.  Bedienungsanleitung}
  91. \author{Lutz Birkhahn}
  92. \date{3. Februar 1992}
  93. \maketitle
  94. %**************************** 2. Seite (Copyright) *************************
  95. \begin{titlepage}
  96. \noindent Diese Anleitung darf von jedermann kopiert oder ausgedruckt werden,
  97. solange damit keine kommerziellen Interessen verbunden sind.
  98. \vfill
  99. \raggedright
  100. F"unfte Auf"|lage.\\
  101. Februar 1992\\
  102. \end{titlepage}
  103.  
  104. %***************************** Inhaltsverzeichnis **************************
  105. %
  106. \tableofcontents
  107. %
  108. %******************************* Einfuehrung ********************************
  109. %
  110. \chapter{Einf"uhrung}
  111.  
  112. Im f"unfzehnten Jahrhundert wurde das erste mal versucht, Buchstaben auf
  113. mathematischem Wege zu erzeugen. Nach einer Bl"utezeit im sechzehnten und
  114. siebzehnten Jahrhundert wurde diese Methode im achtzehnten Jahrhundert
  115. aufgegeben, die Ergebnisse waren einfach zu schlecht. Erst seitdem
  116. in der heutigen Zeit
  117. Computer die Berechnungen schnell und exakt durchf"uhren k"onnen (auch
  118. die Mathematik ist w"ahrend dieser Zeit nicht stehen geblieben), scheint
  119. es m"oglich und vielleicht auch lohnend zu sein, die Mathematik zur
  120. Erzeugung von Buchstaben zu verwenden.
  121.  
  122. Der bekannte Mathematiker und Informatiker Donald~E.~Knuth hat sich seit
  123. 1977 mit dem weiten Gebiet der Typographie besch"aftigt, nachdem er die
  124. ersten mit Computerhilfe hergestellten Drucke seiner Buchreihe
  125. "`The Art of Computer Programming"' gesehen hatte. Die erste Auf"|lage
  126. dieser Buchreihe war noch im Bleisatzverfahren hergestellt worden, und Knuth
  127. war nach einem Vergleich des damals noch neuen Computersatzes mit den
  128. herk"ommlichen Druckverfahren so entt"auscht von der neuen Technik, da"s er
  129. sich seine eigenen Gedanken "uber Typographie in Verbindung mit Computern
  130. machte. Ergebnisse dieser Forschungsarbeiten waren das Schriftsatzprogramm
  131. \TeX 78 und \mf 79, ein Programm f"ur den Entwurf von Schriften f"ur
  132. rasterorientierte Ausgabeger"ate mit mathematischen Mitteln. Nach einigen
  133. Jahren Erfahrung mit diesen beiden Programmen hat er 1982 eine neue
  134. Version von \TeX\ und 1984 ein neues \mf\ geschrieben.
  135. \mf\ entwickelte er praktisch vollkommen neu, nachdem sich gezeigt hatte,
  136. da"s der bisherige Ansatz erhebliche Schw"achen aufwies.
  137.  
  138. Dieses neue \mf\ (und auch das neue \TeX) hat Knuth in der von ihm
  139. erdachten, Pascal-"ahnlichen Sprache {\mc WEB} formuliert und in Buchform
  140. \cite{mfprog,texprog}
  141. ver"offentlicht. Das eigentlich neue an {\mc WEB} ist die Kombination von
  142. Programm und Dokumentation in {\it einer\/} Datei, wof"ur Knuth den Begriff
  143. "`Literarisches Programmieren"' eingef"uhrt hat\cite{web}.
  144. Und in der Tat sind die
  145. Programme fast so gut lesbar wie ein Roman, und sie verdeutlichen,
  146. was Knuth von der "`Kunst, zu programmieren"' versteht. Mein Dank geht an
  147. Knuth, da"s er seine Kunst nicht nur theoretisch in den B"uchern
  148. "`The Art of Computer Programming"' ver"offentlicht, sondern sie
  149. auch praktisch in den Programmen \TeX\ und \mf\ vorgef"uhrt hat.
  150.  
  151. Angesichts dieser gro"sen Leistungen war es f"ur Stefan Lindner und mich
  152. -- als wir im Fr"uhling 1987 auf diese Programme stie"sen -- klar, da"s
  153. wir sie f"ur den Atari~ST implementieren wollten, und da"s die angepa"sten
  154. Programme als Shareware verbreitet werden sollten. Wegen der Form von
  155. WEB-Dateien und der Tatsache, da"s wir beide keine gro"sen Freunde von
  156. Pascal sind, kam uns beiden sofort der Gedanke, die Programme in die
  157. Programmiersprache C zu "ubersetzen. Also besorgten wir uns die entsprechenden
  158. B"ucher von Knuth, und tippten sie ab, wobei wir die Programme gleich in
  159. C "ubersetzten. Stefan implementierte \TeX, w"ahrend ich mich auf
  160. \mf\ st"urzte. Nach "uber einem Jahr Tippfehlersuche und Ausprobieren
  161. verschiedener C-Compiler waren im Sommer 1988 erste brauchbare Ergebnisse
  162. zu sehen. Inzwischen hat sich Turbo~C von Borland/Heimsoeth als der am besten
  163. geeignete Compiler herausgestellt, und es konnten noch einige Verbesserungen
  164. an der Benutzer\-ober\-fl"ache von \TeX\ und \mf\ vorgenommen werden. Die
  165. vorliegenden Versionen von \mf\ und \TeX\ sind das Ergebnis der
  166. langen Bem"uhungen, Knuths Programme f"ur Besitzer von Atari~ST Computern
  167. zug"anglich zu machen. Beide sind {\tt TRAP}- bzw.\ {\tt TRIP}-getestet,
  168. haben also nachgewiesen, da"s sie sich auch bei "`unm"oglichen"' Eingaben
  169. genau wie die Originale verhalten.
  170.  
  171. \vfill
  172. %
  173. %------------------------------ Der Autor ----------------------------------
  174. %
  175. \section{Der Autor}
  176. An dieser Stelle m"ochte ich mich ganz kurz vorstellen. Geboren bin ich
  177. anno 1963 (zuf"alligerweise erhielt Donald Knuth in diesem Jahr auch seinen
  178. Doktortitel in Mathematik vom California Institute of Technology), und
  179. entdeckte schon in der Schule mein Interesse f"ur Computer, zun"achst an
  180. einem Tischrechner von WANG, der noch mit einem richtigen Kernspeicher
  181. ausgestattet war, und bei dem man mit Hilfe einer teuren Zusatztastatur
  182. sogar Buchstaben~(!) eingeben konnte, wenngleich diese auch nur selten
  183. richtig im Rechner ankamen. Nach diversen Zwischenschritten (CBM 3000,
  184. AIM-65, mein erster eigener Computer, und C-64) wurde ich 1985 schlie"slich
  185. stolzer Besitzer eines Atari~ST. Neben \mf\ bin ich zur Zeit auch noch
  186. mit einem Informatik-Studium besch"aftigt.
  187.  
  188. Meine derzeitige Adresse ist:\label{adr}
  189. \begin{verse}
  190.    Lutz Birkhahn\\
  191.    F"urther Str.\ 6\\
  192.    W-8501 Cadolzburg 2\\
  193.    Deutschland\\[0.5\baselineskip]
  194.    Telefon: 0\,91\,03 / 28\,86
  195. \end{verse}
  196.  
  197. Wer seine Registrierungsgeb"uhr zahlen m"ochte (Spenden werden
  198. nat"urlich auch angenommen), "uberweist den Betrag am besten auf eines
  199. der folgenden Konten:
  200. \begin{quote}
  201.    Kontonr.~3062\,25-852 beim Postgiroamt N"urnberg, BLZ~760\,100\,85
  202.  
  203.    Kontonr.~533\,45\,37 bei der Vereinigten Sparkasse im Landkreis
  204.    F"urth, Bankleitzahl 762\,501\,10
  205. \end{quote}
  206.  
  207. Mittels elektronischer Post (email) bin ich im Subnetz unter
  208. {\tt lutz@bisun.nbg.sub.org}\label{mailboxen} erreichbar. Da s"amtliche
  209. Daten "uber private Telefonleitungen gehen und teilweise auch noch
  210. zus"atzliche "Ubertragungsgeb"uhren kosten (f"ur Senden {\em und
  211. Empfangen\/}!), bitte keine Riesenbriefe schicken oder zumindest vorher
  212. bei mir anfragen.
  213.  
  214. %
  215. %------------------------ Weitere Informationen ---------------------------
  216. %
  217. \section{Weitere Informationen}
  218. In gro"sen Teilen des Z-Netzes und Fidonetzes sowie im Subnetz und Mausnetz
  219. gibt es ein \TeX-Forum (Z-Netz: /T-NETZ/TEX, Fido: TEX.GER, Subnetz: sub.tex,
  220. Maus: Gruppe TeX), das sowohl von Entwicklern und Experten als auch von
  221. Benutzern (Anf"anger und Fortgeschrittene) von \TeX\ und \mf\ f"ur den
  222. Informationsaustausch und Fragen genutzt wird. Wer einen Zugang zu einem
  223. der genannten Netze hat und auf dem laufenden bleiben will oder Fragen
  224. zu einem der Programme hat, sollte sich auf jeden Fall mal in diesem Forum
  225. umsehen. Dieses Forum ist nat"urlich nicht auf Atari-Benutzer beschr"ankt.
  226.  
  227. Wer Zugang zum Internet oder Bitnet (EARN etc.) hat, kommt noch an
  228. viel mehr Informationen ran, als Stichworte seien hier nur die \TeX hax
  229. oder die deutsche Mailingliste tex-d-l@dearn genannt. Wer m"ochte, kann
  230. hier den ganzen Tag damit zubringen, Nachrichten "uber \TeX\ zu lesen.
  231.  
  232. Neuerdings hat Stefan Lindner f"ur Modem-Besitzer auch einen eigenen
  233. \TeX-Server eingerichtet, der etliche Megabytes an \TeX-Makros,
  234. Zeichens"atzen f"ur \mf\ und Programmen (haupts"achlich f"ur den
  235. Atari~ST) bietet. Die Telefonnummer ist 09\,11~/~75\,85\,47,
  236. Parameter 300--2400/8/N/1, Benutzername {\tt gast}.
  237.  
  238. Von Stefan Lindner kann man zu "ahnlichen Konditionen wie bei \mf\ das
  239. be\-r"uhm\-te Schriftsatzprogramm \TeX\ (ebenfalls von Donald Knuth entwickelt)
  240. zusammen mit DVI-Ger"atetreibern f"ur die gebr"auchlichsten Dru"cker
  241. bekommen. Seine Adresse lautet:
  242. \begin{verse}
  243.    Stefan Lindner\\
  244.    Iltisstra"se 3\\
  245.    8510 F"urth\\[0.5\baselineskip]
  246.    Telefon: 09\,11~/~7\,59\,18\,86
  247. \end{verse}
  248.  
  249.  
  250. %
  251. %****************************** Shareware **********************************
  252. %
  253. \chapter{Shareware}
  254.  
  255. %
  256. %------------------------ Shareware-Bedingungen ----------------------------
  257. %
  258. \section{Shareware-Bedingungen}
  259. Beide Disketten d"urfen (und sollen) unter den folgenden
  260. Bedingungen beliebig kopiert und weitergegeben werden:
  261. \begin{itemize}
  262. \item Es werden {\it alle\/} Dateien auf der Diskette kopiert.
  263. \item Diese Anleitung und die Programme \mf\ und \inimf\ werden nicht
  264.  ver"andert.
  265. \item Die Weitergabe erfolgt ausschlie"slich zu nichtkommerziellen Zwecken.
  266. \end{itemize}
  267. Kurz gesagt, ich m"ochte nicht, da"s unvollst"andige Versionen kursieren,
  268. oder da"s jemand mit diesen Programmen Geld verdient.
  269.  
  270. Ich kann nat"urlich f"ur die gesamten Programme und die Daten keine
  271. Garantie geben, und auch keine eventuell auftretenden Sch"aden ersetzen
  272. (wenn also z.B. die Augen nicht mehr mitmachen, weil sie durch einen
  273. falschen Zeichensatz zu Tode erschreckt sind, dann bitte die Arztrechnung
  274. nicht an mich schicken). Ich habe jedenfalls versucht, alles so gut und
  275. richtig wie m"oglich zu machen.
  276.  
  277. Jeder, dem diese Implementation von \mf\ gef"allt, und der die
  278. Programme "ofter verwendet, wird gebeten, 50,- DM (au"serhalb Deutschlands
  279. wegen des h"oheren Portos 55,- DM oder US-\$ 30 bar oder Euroscheck oder
  280. Order-Scheck)
  281. an meine auf Seite~\pageref{adr} angegebene Adresse zu schicken. Damit ist
  282. er ein registrierter Benutzer und erh"alt folgenden Service:
  283. \begin{itemize}
  284. \item Die neueste Version (mit Seriennummer, dazu unten mehr) wird kostenlos
  285.    zugeschickt.
  286. \item Telefon-Hotline: kostenlose Beratung registrierter Benutzer\footnote{%
  287.    Das soll nat"urlich nicht hei"sen, da"s nur registrierte Benutzer
  288.    bei mir anrufen d"urfen. "Uber Lob, Kritik, Verbesserungsvorschl"age
  289.    oder gar selbstgeschriebene Programme zu \mf\ oder Ideen dazu freue
  290.    ich mich immer. Nur kann es passieren, da"s ich bei Fragen, zu deren
  291.    Beantwortung ich selbst erstmal etwas Zeit investieren mu"s, zun"achst
  292.    frage, ob der Anrufer registriert ist.}.
  293. \item Registrierte Benutzer k"onnen f"ur 30,- DM (oder US-\$ 20) den kompletten
  294.    Quellcode (in C) zu \mf\ anfordern.
  295. \item Das erste Update wird kostenlos zugeschickt (wo kriegt man heute noch
  296.    so einen Service?), alle weiteren Updates werden schriftlich
  297.    bekanntgegeben, registrierte Benutzer erhalten diese dann gegen
  298.    voraussichtlich ca.\ 10,- DM pro Diskette.
  299. \end{itemize}
  300.  
  301. %
  302. %------------------------------ Seriennummer -------------------------------
  303. %
  304. \section{Seriennummer}
  305. In jeder \mf-Version ist eine Seriennummer enthalten. Wenn jemand (im
  306. folgenden A genannt) den oben genannten Betrag bezahlt, erh"alt er daf"ur
  307. eine Version mit einer neuen Seriennummer. Diese Nummer wird bei mir 
  308. registriert. Wenn er nun diese registrierte Version weitergibt (und das
  309. soll er ja), und einer der
  310. Empf"anger dieser Kopie zahlt seinerseits die Sharewaregeb"uhr,
  311. so erh"alt A davon 15,- DM (bzw. ca. US \$ 8) als "`Pr"amie"' f"ur die
  312. Verbreitung des Programmes. Wenn also nur drei von den Leuten, an die man
  313. die Diskette weitergegeben hat, sich bei mir registrieren lassen, hat man
  314. bereits seine Ausgaben fast amortisiert.
  315.  
  316. Wenn jemand allerdings mehr als drei"sigmal die Belohnung kassiert, gehe ich
  317. davon aus, da"s es sich um einen kommerziellen Software-Vertrieb handelt,
  318. und gebe an diesen keine Belohnungen mehr weiter.
  319.  
  320. Mit diesem Konzept will ich einerseits die Verbreitung von \mf\ etwas
  321. beschleunigen, und andererseits versuchen, m"ogliche Anfangsschwierigkeiten
  322. durch pers"onlichen Kontakt unter den Benutzern zu verringern (damit ein
  323. Benutzer, der weit entfernt von mir wohnt, bei Problemen mit \mf\ zun"achst
  324. zum vermutlich n"aher gelegenen Bekannten gehen kann, von dem er die Kopie
  325. hat, bevor er bei mir anruft, um das Problem zu l"osen. Vieles l"a"st sich
  326. eben bei einem pers"onlichen Gespr"ach viel leichter und billiger l"osen
  327. als "uber eine lange Telefonleitung).
  328.  
  329. Damit ich die "`Pr"amie"' weiterleiten kann, bitte bei der Registrierung
  330. unbedingt die Seriennummer der bisher benutzten Version (erscheint bei
  331. jedem Start von \mf\ in der zweiten Zeile auf dem Bildschirm) mit angeben.
  332. Falls man bisher noch keine Version besa"s (ist mir im Moment allerdings
  333. noch unklar, wie man dann an diese Anleitung kommen kann), sollte man
  334. dies bitte deutlich vermerken. Am besten druckt man die Datei
  335. \file{FORMULAR.TXT} auf einem Drucker aus und macht die entsprechenden
  336. Eintragungen oder sendet das ausgef"ullte Formular an die auf
  337. Seite~\pageref{mailboxen} angebene email-Adresse.
  338.  
  339. %
  340. %******************************* Installation ******************************
  341. %
  342. \chapter{Installation}
  343.  
  344. Alle Hinweise in diesem Kapitel sind lediglich Vorschl"age f"ur Benutzer,
  345. die bis jetzt noch wenig Erfahrung mit \mf\ haben. Durch die Verwendung
  346. einer "`Setup-Datei"' kann man die Programme und Daten fast
  347. beliebig auf seinen Speichermedien verteilen. 
  348.  
  349. Da die kompletten Sourcecodes der Zeichens"atze insgesamt "uber
  350. 700~KByte Umfang besitzen, war es n"otig, einige Zeichens"atze mit
  351. dem Programm {\mc LHARC} zu komprimieren. Dieses Programm befindet sich
  352. ebenfalls auf Diskette~2. Bez"uglich der Weitergabe dieses Programmes
  353. verweise ich auf die dortige Anleitung.
  354.  
  355. %
  356. %------------------------ Installation auf Festplatte ----------------------
  357. %
  358. \section{Installation auf Festplatte}
  359. Besitzer einer Festplatte sind (nicht nur) bei der Installation fein raus:
  360. Sie starten einfach das Programm \file{INSTALL.PRG} auf Diskette~1. Da
  361. dies ein allgemein verwendbares Programm ist, fragt es erst einmal nach
  362. einer Datei, in der die genauen Installationsanweisungen stehen. F"ur
  363. \mf\ w"ahlt man hier die Datei \file{METAFONT.INS} aus. Nun kann man
  364. ausw"ahlen, ob man nur die Grundinstallation durchf"uhren will oder auch
  365. die \TeX-Shell installieren will, und ob man die Zeichens"atze komprimiert
  366. auf der Platte stehen haben m"ochte oder lieber ausgepackt (schneller,
  367. aber daf"ur mehr Platzbedarf).
  368.  
  369. Wenn man nun den OK-Button anklickt, wird man noch nach dem Ziel gefragt,
  370. wo das \mf-System installiert werden soll (hier wird der Pfad angegeben,
  371. wo dann das Programm selbst und alle Unterordner stehen sollen). Dann
  372. kann man sich zur"ucklehnen und der Installation zuschauen, nur einmal
  373. wird man noch aufgefordert, die zweite Diskette einzulegen.
  374.  
  375. Man kann "ubrigens auch die Disketten in eine RAM-Disk oder auf die
  376. Festplatte kopieren, dann geht die Installation noch schneller. Man mu"s
  377. dabei nur beachten, da"s die Installationsdatei \file{METAFONT.INS}
  378. auch von Platte bzw.\
  379. RAM-Disk geladen wird. Die Auf"|forderung nach einem Diskettenwechsel
  380. beantwortet man einfach mit einem Tastendruck (es mu"s {\bf nicht} die
  381. Festplatte oder RAM-Disk ausgewechselt werden!).
  382.  
  383. Wenn das Programm fertig ist, steht \mf\
  384. gebrauchsfertig auf der Platte, die Setup-Datei ist auch bereits an die
  385. "ortlichen Gegebenheiten angepa"st. Lediglich bei der \TeX-Shell m"ussen
  386. noch die Pfade eingestellt werden (siehe dazu die Anleitung der \TeX-Shell).
  387. Ein weiterer Vorteil des Installationsprogrammes ist die automatische
  388. "Uberpr"ufung der Dateien mittels CRC-Pr"ufsummen, und zwar nicht nur
  389. beim Extrahieren (Auspacken) von Dateien aus LHARC- oder Larc-Dateien,
  390. sondern auch beim Kopieren.
  391.  
  392. %
  393. %------------------- Installation auf Disketten-Laufwerk -------------------
  394. %
  395. \section{Installation auf Disketten-Laufwerk}
  396. F"ur eigene Experimente mit \mf, bei denen die CMR-Sourcecodes nicht
  397. ben"otigt werden, kann die Programmdiskette (am besten nat"urlich eine
  398. Sicherheitskopie davon) ohne spezielle Installation verwendet werden.
  399. Benutzer, die nur einseitige Laufwerke besitzen, k"onnen sich (bei einem
  400. Freund mit zweiseitigem Laufwerk) eine Arbeitsdiskette zusammenstellen,
  401. auf der nur die Dateien \file{METAFONT.PRG}, \file{METAFONT.RSC},
  402. \file{MFSETUP} und
  403. \file{PLAIN.BSE} stehen. Es bleiben dann noch etwas mehr als 100~KByte
  404. "ubrig, in denen Eingabedateien (\verb|*.MF|) sowie LOG-, GF- und
  405. TFM-Dateien untergebracht werden k"onnen. Routinierte Diskjockeys oder
  406. Besitzer von zwei Laufwerken k"onnen in der Setup-Datei auch
  407. Laufwerk~\verb|B:\|
  408. angeben (z.B. bei den {\tt inputpaths}). Wer noch etwas Platz im RAM hat,
  409. kann eine kleine Ramdisk (Minimum ca.\ 50~KByte) installieren, und in der
  410. Setup-Datei {\tt logpath}, {\tt gfpath} oder {\tt tfmpath} (auf diese
  411. Dateien wird in der Regel w"ahrend des gesamten Programmlaufes etwas
  412. geschrieben) auf die Ramdisk setzen.
  413.  
  414. Um komplette Zeichens"atze f"ur \TeX\ zu erzeugen, mu"s man schon etwas
  415. mehr mit dem Diskettenplatz jonglieren. Nachdem es aber inzwischen
  416. m"oglich ist, auch komprimierte Dateien direkt mit \mf\ zu lesen,
  417. ist es durchaus m"oglich (wenn auch nicht komfortabel), mit nur
  418. einem einseitigen Laufwerk zu arbeiten. Wer tats"achlich so enge
  419. Platzverh"altnisse hat und deswegen mit der Installation nicht klar
  420. kommt, m"oge sich bei mir melden, dann versuche ich, eine arbeitsf"ahige
  421. Verteilung der Dateien zu finden.
  422.  
  423. Insgesamt braucht man ca.\ 1~MByte Speicher %***** <1 MByte!!!
  424. auf Disketten und
  425. evtl.\ Ramdisk, um das Programm, die Base-Datei und alle Zeichensatz-Sourcen
  426. zu speichern. Es w"urde hier wohl zu weit f"uhren, f"ur jede m"ogliche
  427. Rechnerkonfiguration (davon gibt es schlie"slich sehr viele verschiedene)
  428. die beste Auf"|teilung anzugeben, schon allein deswegen, weil es auch auf
  429. den Anwendungsfall ankommt, was man als {\em beste\/} Auf"|teilung ansehen
  430. kann. Ich denke jedoch, da"s es mit diesen Informationen jedem Benutzer
  431. m"oglich sein sollte, eine f"ur seine Anwendung passende Verteilung der
  432. Daten zu finden (wenn nicht, gibt es ja immer noch die "`Telefon-Hotline"'
  433. oder andere \mf-Benutzer, die solche Arbeiten schon hinter sich haben).
  434.  
  435. %
  436. %-------------------------- Wichtige Hinweise --------------------------
  437. %
  438. \section{Wichtige Hinweise}
  439. Im folgenden ein paar Hinweise zum Betrieb des Programmes, die sich im
  440. Laufe der Zeit angesammelt und keinen besseren Platz in dieser Anleitung
  441. gefunden haben.
  442.  
  443. \begin{itemize}
  444. \item Wenn man die Version~2.0 von Tempus verwendet und dort die Parameter
  445.   abspeichern will, so sollte man das Programm dazu unbedingt vom Desktop
  446.   aus starten. Wenn man Tempus aus der \TeX-Shell (oder einer anderen Shell)
  447.   startet und dann "`\verb|Param. & sichern...|"' aufruft, werden die
  448.   Parameter {\em nicht} in Tempus, sondern in der {\em Shell} abgespeichert!
  449.   Die Shell kann man nach so einer Aktion unbesorgt in den Desktop-Papierkorb
  450.   schmei"sen. Ab Tempus Version~2.05 ist dieser Fehler beseitigt worden.
  451. \item Mit einigen `mode'-Definitionen (z.B. \verb|stlaser| f"ur den
  452.   Atari-Laser"-dru"cker {\mc SLM804}) in der Datei \file{atari.mf}
  453.   gibt es manchmal Probleme mit CMR-Zei\-chen\-s"atzen:
  454.   \mf\ meldet den Fehler \verb|"! Bad pos..."| oder \verb|"! Strange path..."|.
  455.   Dieser Fehler liegt nicht an der \mf-Implementation, und auch die
  456.   CMR-Sourcecodes sind korrekt. Eine genauere Untersuchung ergab, da"s die
  457.   negativen `{\tt blacker}'-Werte in der Datei \file{ATARI.MF} (bzw.\
  458.   \file{modes.mf}) schuld sind. Knuth
  459.   warnt in seinem Buch "`Computer Modern Typefaces"' (Computers \&
  460.   Typesetting, Volume~E) auf Seite~7 ausdr"ucklich vor einem
  461.   $\hbox{\tt blacker} < 0$ :
  462.  
  463.   \begin{quote}
  464.      ``Trouble might also arise if the device-specific parameter called
  465.      {\it blacker\/} is made negative.''
  466.   \end{quote}
  467.  
  468.   Leider sehen auf manchen Ger"aten die Zeichens"atze nun mal am besten aus,
  469.   wenn `{\tt blacker}' negativ ist. Deswegen wurde mittels der Datei
  470.   \file{cmlocal.mf} eine Behandlung des Problems eingef"uhrt. Es wird
  471.   zwar noch ein Fehler gemeldet, aber zumindest ist der Zeichensatz noch
  472.   verwendbar, wenn dieser Fehler aufgetaucht ist. Eine genauere Erkl"arung
  473.   des Problems und der zur L"osung verwendeten Methode findet man in
  474.   der Datei \file{doc}\bs\file{bad\_pos.doc}.
  475. \end{itemize}
  476.  
  477.  
  478. %
  479. %******************** METAFONT auf dem Atari ST ****************************
  480. %
  481. \chapter{\protect\mf\ auf dem Atari ST}
  482.  
  483. \mf\ wurde auf dem ST als \gem-Programm realisiert. S"amtliche Textausgaben
  484. gehen in ein Text-Fenster, dort werden auch die Eingaben des Benutzers
  485. vorgenommen. Ein zweites Fenster dient der Ausgabe von Grafik. Dieses wird
  486. aber erst auf Anforderung ge"offnet, z.B. mit den \mf-Befehlen {\tt openit}
  487. oder {\tt showit}. Wenn man bei der Erzeugung eines Zeichensatzes jedes
  488. Zeichen sehen will, bevor es in die GF-Datei geschrieben wird, kann man
  489. dies mit dem \mf-Befehl {\tt screenchars} einschalten. Mit {\tt
  490. screenstrokes} kann man jeden einzelnen "`Pinselstrich"' auf dem Bildschirm
  491. sehen. F"ur die weiteren Grafikbefehle sei auf das \mf book~\cite{mfbook}
  492. verwiesen. F"ur Spezialanwendungen kann man die \gem-Umgebung in \mf\
  493. auch deaktivieren, siehe dazu die Beschreibung der Environment-Variablen
  494. \verb|MF_NOGEM| in Abschnitt~\ref{environment}.
  495.  
  496. Man kann die Fenster jederzeit vergr"o"sern, verkleinern oder verschieben,
  497. auch w"ahrend \mf\ besch"aftigt ist. Bei l"angeren Dateioperationen (z.B.
  498. Laden der Base-Datei) oder komplizierten Berechnungen kann es jedoch
  499. vorkommen, da"s \mf\ nicht sofort auf die Aktivit"aten des Benutzers
  500. reagiert, soda"s man entsprechend l"anger auf die Maustaste dr"ucken mu"s.
  501. In den meisten F"allen zeigt \mf\ diesen Umstand mit einer "`flei"sigen
  502. Biene"' als Mauscursor an.
  503.  
  504. Die Fenstergr"o"sen und -Positionen zu Beginn des Programmes k"onnen durch
  505. verschiedene Environment-Variablen eingestellt werden, siehe dazu den
  506. Abschnitt~\ref{environment}.
  507.  
  508. Die Arbeit von \mf\ kann man durch gleichzeitiges Dr"ucken der Tasten
  509. {\mc CONTROL} und {\mc ALTERNATE} unterbrechen, man landet dann in der
  510. normalen Feh\-ler\-be\-hand\-lungs-Rou\-ti\-ne, wo man z.B. Endlosschleifen untersuchen
  511. kann, Variablen abfragen oder das Programm beenden kann. Aus den gleichen
  512. Gr"unden wie im vorigen Absatz mu"s man die beiden Tasten eventuell etwas
  513. l"anger gedr"uckt halten. \mf\ unterbricht n"amlich nur dann seine Arbeit,
  514. wenn es auch in der Lage ist, zus"atzliche Eingaben des Benutzers zu
  515. verdauen. Trotzdem ist es zum Beispiel bei der Untersuchung von Variablen
  516. ratsam, die Aktivit"aten vor \mf\ zu "`verstecken"', damit man nichts
  517. durcheinanderbringt. Dies kann man durch das {\tt hide}-Makro erreichen.
  518. Um z.B. den Inhalt der Variablen $x$ anzuzeigen, gibt man folgendes ein:
  519. \begin{verbatim}
  520.    I hide(show x)
  521. \end{verbatim}
  522.  
  523. W"ahrend \mf\ auf eine Eingabe wartet, kann man es durch Dr"u"cken der
  524. {\mc ESC}-Taste abbrechen. Wenn man in der daraufhin erscheinenden
  525. Alarm-Box auf {\tt abort} klickt, riskiert man allerdings unvollst"andige
  526. GF- und TFM-Dateien!
  527.  
  528. %
  529. %------------------------- Komprimierte Dateien --------------------------
  530. %
  531. \section{Komprimierte Dateien}\label{larc}
  532.  
  533. Wenn man wenig Speicherplatz zur Verf"ugung hat (und wer hat das nicht?)
  534. und daf"ur eine etwas geringere Geschwindigkeit in Kauf nehmen
  535. will, kann man die \mf-Eingabedateien in komprimierter Form speichern.
  536. \mf\ ist in der Lage, mit dem Programm Larc komprimierte Dateien
  537. (\verb|*|\file{.lzs}) einzulesen. Dieses Dateiformat ist "ahnlich dem
  538. bekannten \verb|*|\file{.lzh}-Format von LHarc (genauer gesagt ist es ein
  539. Vorg"anger davon, und neuere LHarc-Versionen sind auch in der Lage,
  540. dieses Format zu verwenden), mit dem wesentlichen Unterschied, da"s
  541. es erheblich schneller expandiert werden kann als \file{lzh}-Dateien.
  542.  
  543. Um \mf\ mitzuteilen, welche Larc-Archive es durchsuchen soll,
  544. mu"s ihm lediglich im Suchpfad f"ur die Eingabepfade ({\tt inputpaths},
  545. siehe dazu den Abschnitt~\ref{setup}) der Name der \file{lzs}-Dateien
  546. genannt werden.
  547.  
  548.  
  549. %
  550. %--------------------------- Setup-Datei -------------------------------
  551. %
  552. \section{Setup-Datei}\label{setup}
  553. In der Setup-Datei stehen s"amtliche Pfade, auf die \mf\ zugreifen kann.
  554. Wenn in der Kommandozeile nichts anderes angegeben wurde, sucht \mf\
  555. nach der Datei \file{MFSETUP} im aktuellen Ordner.
  556. Die Syntax f"ur die Pfad-Definitionen ist bis auf die Bezeichnung der
  557. Schl"usselw"orter genau die gleiche wie beim \TeX\ von Stefan Lindner. Es sind
  558. also zwischen den einzelnen W"ortern (Token) beliebig viele Leerzeichen,
  559. Returns, Tabulatoren und Kommentare erlaubt. Kommentare werden mit einem
  560. {\tt`\%'} eingeleitet
  561. und gehen bis zum Zeilenende (wie bei \TeX\ und \mf\ "ublich). Auf der
  562. linken Seite vom {\tt `='} d"urfen folgende Schl"usselw"orter stehen
  563. (in Klammern ist jeweils angegeben, welchen Pfad \mf\ verwendet, wenn in
  564. der Setup-Datei nichts definiert ist). Wenn nichts anderes angegeben ist,
  565. gelten die Pfade sowohl f"ur \mf\ als auch f"ur \inimf.
  566. \begin{description}
  567. \item [\tt poolfile] gibt an, von wo \inimf\ den String-Pool l"adt. 
  568.   Dies mu"s ein g"ultiger Dateiname sein, er darf also insbesondere nicht
  569.   mit einem Backslash (\verb|\|) enden, und die Extension mu"s bei Bedarf
  570.   explizit angegeben werden. Dieser Pfad gilt nur f"ur \inimf; \mf\ ignoriert
  571.   ihn. (\bs\file{mf}\bs\file{bases}\bs\file{mf\_pool})
  572. \item [\tt defaultbase] ist die Base-Datei, die \mf\ l"adt, wenn der
  573.   Benutzer nichts anderes angegeben hat. Auch dies mu"s genauso wie
  574.   {\tt poolfile} ein g"ultiger Dateiname sein.
  575.   (\bs\file{mf}\bs\file{bases}\bs\file{plain.bse})
  576. \item [\tt basepaths] dort wird die Base-Datei gesucht, wenn eine
  577.   angegeben wurde. Wenn keine angegeben wurde, l"adt \inimf\ gar keine
  578.   Base-Datei, w"ahrend \mf\ die unter {\tt defaultbase} genannte verwendet.
  579.   (\bs\file{mf}\bs\file{bases}\bs)
  580. \item [\tt inputpaths] besteht in der Regel aus einer Liste von
  581.   Pfaden, in denen nach Input-Dateien (\verb|*|\file{.MF}) gesucht werden soll.
  582.   (\bs\file{mf}\bs\file{inputs}\bs)
  583. \item [\tt gfpath]       in diesen Ordner werden die GF-Dateien geschrieben.
  584.   (\bs\file{mf}\bs)
  585. \item [\tt tfmpath]      ist der Ort, wo die TFM-Datei abgelegt wird.
  586.   (\bs\file{mf}\bs)
  587. \item [\tt logpath]      dorthin kommt die LOG-Datei. (\bs\file{mf}\bs)
  588. \item [\tt dumppath]     ist der Ordner, in den \inimf\ die Base-Datei
  589.   schreibt, wenn `dump' befohlen wurde. (\bs\file{mf}\bs\file{bases}\bs)
  590. \end{description}
  591.  
  592. Auf der rechten Seite des {\tt `='} steht jeweils der Pfad, in dem nach der
  593. entsprechenden Datei gesucht wird. Dieser Pfad sollte in der Regel
  594. absolut angegeben werden, damit \mf\ die Dateien auch dann findet, wenn
  595. es von einem anderen Directory oder Laufwerk aus gestartet wurde. Ein
  596. Punkt (`\file.') ist auch ein g"ultiger Pfad, er bezeichnet das aktuelle
  597. Directory. Wenn dies nicht explizit in der Setup-Datei angegeben ist,
  598. sucht \mf\ {\em nicht\/} automatisch im aktuellen Directory nach
  599. einer Datei. Mit Ausnahme von {\tt poolfile} und {\tt defaultbase} 
  600. (dies sind ja Dateinamen und keine Pfade) d"urfen alle Pfade wahlweise
  601. mit oder ohne `\verb|\|' am Ende angegeben werden. Bei {\tt
  602. basepaths} und {\tt inputpaths} d"urfen mehrere Pfade, jeweils getrennt durch
  603. ein Komma, definiert werden. \mf\ durchsucht dann in der vorgegebenen
  604. Reihenfolge alle Pfade, bis es die Datei gefunden hat. Jede
  605. Pfad-Definition mu"s mit einem Strichpunkt abgeschlossen werden.
  606. Zwischen Gro"s- und Kleinschreibung wird nicht unterschieden.
  607.  
  608. Wie in Abschnitt~\ref{larc} bereits angedeutet, kann man bei den
  609. {\tt inputpaths} auch komprimierte Dateien (Larc-Archive) angeben, diese
  610. m"ussen die Extension \file{.lzs} besitzen. Im Prinzip werden die
  611. Larc-Archive von \mf\ wie ein Dateiverzeichnis angesehen, allerdings
  612. mit der Einschr"ankung, da"s keine Unterverzeichnisse verwendet werden
  613. d"urfen (im Larc-Archiv d"urfen also nur Dateinamen, keine Pfade
  614. abgespeichert werden).
  615.  
  616. Um zu vermeiden, da"s der Benutzer mit steigender Anzahl an
  617. \mf-Zeichens"atzen eine undurchschaubar lange Liste an {\tt inputpaths}
  618. angeben mu"s, wurde au"serdem die M"og"-lichkeit vorgesehen, sogenannte
  619. Wildcards zu verwenden. Dazu k"onnen in den {\tt inputpaths} die
  620. \gemdos-"ublichen Zeichen Stern und Fragezeichen (\verb|*|, \verb|?|)
  621. mit der ebenso "ublichen Bedeutung (beliebig viele Zeichen bzw. genau
  622. ein Zeichen, nur in letztem Pfad-Teil erlaubt, etc.) verwendet werden.
  623. Bei Pfaden mit Wildcards (und nur da) kommt es auch darauf an, ob der
  624. Pfad mit einem Backslash (\verb|\|) abgeschlossen ist oder nicht: Pfade
  625. mit Backslash am Ende betreffen n"amlich ausschlie"slich Directories,
  626. {\bf keine} Archive. Damit ist es m"oglich, in einem Verzeichnis, das
  627. sowohl Unterverzeichnisse als auch \file{lzs}-Archive enth"alt, mit
  628. \verb|...\*|\file.\verb|*\| zuerst alle Unterverzeichnisse und dann mit
  629. \verb|...\*|\file{.lzs} alle Archive auszuw"ahlen, so da"s zuerst die
  630. ausgepackten Dateien in den Verzeichnissen untersucht werden, und erst,
  631. wenn dort nichts gefunden wurde, auf die komprimierten Archive
  632. ausgewichen wird.
  633.  
  634.  
  635. %
  636. %--------------------------- Kommandozeile ---------------------------------
  637. %
  638. \section{Kommandozeile}
  639. \mf\ wurde so implementiert, da"s es als \gem-Programm vom Desktop aus
  640. m"oglichst einfach gestartet werden kann. Viele Benutzer verwenden jedoch
  641. lieber eine Shell, die ihnen manche Tipparbeit ersparen kann. Als erstes
  642. sei hier die hervorragende \TeX-Shell von Klaus Heidrich, Robert Kie"sling
  643. und Reinhard Maluschka genannt, die dem Paket ebenfalls beiliegt.
  644. Mancher bevorzugt aber auch textorientierte Shells, die meist an UNIX oder
  645. MS-DOS angelehnt sind. Um die Verwendung solcher Shells (sowohl \gem- als
  646. auch textorientierte) zu erm"oglichen,
  647. wurden einige Optionen definiert, die in der Kommandozeile angegeben werden
  648. k"onnen. Parameter ({\it Dateiname\/} bzw.\ {\it Zahl\/}) d"urfen durch ein
  649. Leerzeichen von der Option getrennt werden. Verschiedene Optionen
  650. {\em m"ussen\/} durch ein Leerzeichen voneinander getrennt werden.
  651. \begin{description}
  652. \item[-j] \quad Wenn \mf\ seine Arbeit beendet hat, wird normalerweise ein
  653.    akustisches Weck-Signal ausgegeben und gewartet,
  654.    bis der Benutzer durch einen Tastendruck signalisiert, da"s er wieder
  655.    aufgewacht ist und alle wichtigen und unwichtigen Mitteilungen auf dem
  656.    Bildschirm gelesen hat. Wenn man jedoch mit der \TeX-Shell oder einer
  657.    Batchdatei z.B. w"ahrend der Nacht gleich mehrere Zeichens"atze
  658.    hintereinander erzeugen will, w"are es unpraktisch, wenn man alle zehn
  659.    Minuten zum Computer rennen m"usste, nur um auf eine Taste zu dr"ucken.
  660.    Das kann der Computer schlie"slich auch selber machen. Mit der Option
  661.    {\tt -j} kann man \mf\ mitteilen, da"s es die Nacht- (oder Tag-) Ruhe
  662.    nicht durch Gebimmel unterbrechen soll, und da"s es am Ende nicht auf
  663.    eine Taste warten soll, da sowieso niemand die Kommentare auf dem
  664.    Bildschirm lesen will.
  665.  
  666.    Wenn w"ahrend des \mf-Laufes ein fataler Fehler oder Speichermangel
  667.    auftritt, wird die Sache etwas komplizierter. Die folgende
  668.    Beschreibung kann ohne Probleme "ubersprungen werden, wenn man beachtet,
  669.    da"s der \verb|nonstopmode| (oder gar \verb|batchmode|) nur dann
  670.    eingeschaltet sein sollte, wenn \mf\ l"angere Zeit unbeaufsichtigt
  671.    (z.B. "uber Nacht) laufen soll. Falls bei einem solchen "`Batchlauf"'
  672.    Probleme auftauchen, sollte der erste Schritt darin bestehen, den
  673.    \verb|nonstopmode| wieder auszuschalten (\TeX-Shell: siehe Dialogbox
  674.    im \mf-Teil unter "`\verb|P zus. Parm.|"')!
  675.  
  676.    Bei fatalen Fehlern und Speicherproblemen (R"uckgabewerte 3 und 6) wartet
  677.    \mf\ auf einen Tastendruck, auch wenn die "`Silent-Option"' \verb|-j|
  678.    aktiviert wurde. Dies l"a"st sich nur dadurch vermeiden, da"s man \mf\
  679.    im \verb"nonstopmode" oder \verb"batchmode" laufen l"a"st (das sind
  680.    eingebaute \mf-Befehle). Das kann zum Beispiel dann sinnvoll sein, wenn
  681.    man den Rechner "uber Nacht laufen l"a"st, und die Shell auch bei fatalen
  682.    Fehlern (z.B. mehr als 100 normale Fehler, capacity exceeded, aber auch
  683.    Platte voll, nicht gen"ugend Speicher!) weitermachen soll. Leider ist es
  684.    bei manchen "`fatalen Fehlern"' nicht m"oglich, die Fehlerursache in die
  685.    Logdatei zu schreiben (z.B. wenn die Platte voll ist), so da"s im
  686.    \verb|nonstopmode| oder \verb|batchmode| der nur auf dem Bildschirm
  687.    erscheinende Fehlerhinweis sofort wieder verschwindet. In diesem Fall
  688.    sollte man (z.B. am n"achsten Morgen) den entsprechenden Zeichensatz
  689.    nochmal unter Aufsicht und ohne \verb|nonstopmode| erzeugen, so da"s man
  690.    die Fehlermeldung auf dem Bildschirm betrachten kann.
  691.  
  692.    Fatale Fehler, die bereits unmittelbar beim Programmstart auftreten (z.B.
  693.    Fehler in Setup-Datei, Speichermangel) lassen sich jedoch auch mit einem
  694.    \verb|nonstopmode| oder \verb|batchmode| nicht "uberspringen, weil die
  695.    entsprechenden \mf-Befehle zu diesem Zeitpunkt noch gar nicht ausgewertet
  696.    sind. In diesen F"allen ist es aber meistens sowieso nicht sehr sinnvoll,
  697.    noch weiterarbeiten zu wollen, da sie auch bei jedem weiteren
  698.    Programmstart wieder auftreten w"urden.
  699. \item[-s {\it Dateiname\/}] \quad \mf\ soll die Pfaddefinitionen aus der
  700.    Datei {\it Da\-tei\-na\-me\/} lesen. Ohne Angabe dieser Option sucht \mf\ nach
  701.    der Datei \file{MFSETUP} im aktuellen Directory. Wenn eine Setup-Datei
  702.    nicht gefunden wird, dann werden die im vorigen Abschnitt angegebenen
  703.    Standardpfade verwendet. Bei Verwendung der \TeX-Shell in der momentanen
  704.    Version empfehle ich jedoch, immer die Datei \file{MFSETUP} zu verwenden,
  705.    und dort auch alle Pfade zu definieren, sonst kann es zu Problemen im
  706.    Zusammenspiel der verschiedenen Programme kommen (in zuk"unftigen
  707.    Versionen der \TeX-Shell wird es vielleicht ein Telepathie-Modul geben,
  708.    das die Gedanken des Benutzers liest und daraus die gew"unschten
  709.    Pfade ableitet\dots).
  710. \item[-e {\it Zahl\/}] \quad Bei Verwendung der \TeX-Shell ist es durch diese
  711.    Option m"oglich, direkt aus der Fehlerbehandlung in \mf\ durch Eingabe
  712.    von `{\tt e}' einen Editor zu starten, der sofort die fehlerhafte Datei
  713.    l"adt und in die entsprechende Zeile springt (sofern der Editor "ahnlich
  714.    wie Tempus Dateiname und Zeilennummer in der Kommandozeile akzeptiert).
  715.    Wie funktioniert nun das Ganze? \mf\ interpretiert die {\it Zahl\/} als
  716.    Adres\-se im Hauptspeicher und erwartet dort einen Speicherbereich von
  717.    mindestens 270 Zeichen, der mit dem nullterminierten String
  718.    `\verb|TEXSHELL|' vorbesetzt ist. Wenn der Benutzer nun eine Fehlermeldung
  719.    mit `{\tt e}' beantwortet, schreibt \mf\ den Namen der gerade bearbeiteten
  720.    Datei und durch ein Leerzeichen davon getrennt die aktuelle Zeilennummer
  721.    in diesen Speicherbereich (dabei wird die Zeichenfolge \verb|"TEXSHELL"|
  722.    "uberschrieben). Diese Informationen kann das aufrufende Programm
  723.    auswerten und anschlie"send den Editor starten.
  724. \item[-w {\it Zahl\/}]
  725. \item[-h {\it Zahl\/}] \quad Diese beiden Werte geben die Breite
  726.    und H"ohe des Grafik-Puffers in Pixeln an. Standard ist 640 mal
  727.    400 Pixel. Siehe auch die Beschreibung der beiden Environment-Va\-ria\-blen
  728.    \env{MF\_SCREENWIDTH} und \env{MF\_SCREENHEIGHT} in Abschnitt~\ref{environment}.
  729.    Wenn sowohl Environment-Va\-ria\-ble als auch die Kommandozeilen-Option
  730.    angegeben sind, werden die Werte aus der Kommandozeile verwendet.
  731. \end{description}
  732. Wenn man eine Option eingibt, die \mf\ nicht kennt, wird eine Hilfsseite
  733. ("`Usage"') ausgegeben, in der nochmal die genaue Verwendung der Optionen
  734. erkl"art ist.
  735.  
  736. Man kann \mf\ entweder als \gem-Programm starten oder durch "Andern
  737. der File-Extension auf \file{.ttp} oder \file{.tos} als \tos-Programm,
  738. wobei dann die gesamte Text-Ein/Ausgabe "uber \gemdos\ l"auft
  739. und somit auch etwas schneller als "uber \gem. Da die Erkennung des
  740. eigenen Programmnamens nicht hundertprozentig sicher ist, kann man
  741. das auch "uber die Environment-Variable \verb|MF_NOGEM| umschalten,
  742. mehr dazu in Abschnitt~\ref{environment}.
  743.  
  744. Zus"atzlich zu den eben beschriebenen Optionen kann man bereits in der
  745. Kommandozeile eine Startzeile eingeben. Doch dazu erstmal eine Erkl"arung,
  746. was mit Startzeile gemeint ist. Wenn \mf\ vom Desktop aus gestartet
  747. wird, meldet es sich mit zwei Sternen (`$**$'). Damit l"a"st es erkennen,
  748. da"s es auf die Eingabe der Startzeile wartet (die normale Eingabezeile
  749. beginnt mit einem einfachen Stern). Die Besonderheiten, die f"ur die
  750. Startzeile gelten, werden im Kapitel~\ref{kap-erste} n"aher
  751. erl"autert. Diese Startzeile kann man nun bereits in der Kommandozeile
  752. angeben, und zwar {\em nach\/} den Optionen. Es w"are zwar sehr ungew"ohnlich,
  753. aber falls die Startzeile zuf"allig mit einem Minuszeichen (`-') beginnen
  754. sollte, mu"s man diese erstmal durch zwei Minuszeichen von den Optionen
  755. abtrennen. Eine Kommandozeile sieht also ganz allgemein so aus:
  756. $$\hbox{\file{METAFONT.PRG} [{\it Optionen\/}] [-{}-] [{\it Startzeile\/}]}$$
  757.  
  758. Falls man die Startzeile bereits in der Kommandozeile angibt, sollte man
  759. beachten, da"s manche Shells zun"achst alle Buchstaben in Gro"sbuchstaben
  760. umwandeln, w"ahrend die Kommandos in \mf\ in der Regel klein geschrieben
  761. sind (die bekannteste Shell mit diesem Verhalten ist wohl der \gem-Desktop,
  762. der allerdings f"ur \gem-Programme normalerweise keine Kommandozeile
  763. vorsieht). Also entweder eine "`vern"unftige"' Shell verwenden oder die
  764. Startzeile erst in \mf\ (nach den zwei Sternen) eingeben.
  765.  
  766. Da in \mf\ der Backslash (`\bs') als Sonderzeichen definiert ist, darf er
  767. in Datei\-na\-men in der Regel nicht verwendet werden (Ausnahmen: wenn \mf\ den
  768. Benutzer explizit zur Eingabe eines Dateinamens auffordert sowie bei der
  769. `{\tt -s}'-Option). Um Dateien
  770. trotzdem mit einem Pfad versehen zu k"onnen, wurde der einfache
  771. Schr"agstrich (`/') als Ersatzzeichen gew"ahlt (man ist damit auch dem
  772. Filesystem von UNIX ein kleines -- wenn auch unbedeutendes -- St"uck n"aher).
  773. Vor dem "Offnen einer
  774. Datei wird dieses Zeichen wieder in einen Backslash zur"uckverwandelt,
  775. damit \gemdos\ korrekt arbeiten kann. Generell l"a"st sich dazu aber sagen,
  776. da"s man zumindest in den Eingabedateien auf Pfadangaben m"oglichst
  777. verzichten sollte, denn portabel ist sowas nat"urlich nicht. Schon der
  778. Nachbar hat auf seinem Atari~ST mit sehr gro"ser Wahrscheinlichkeit
  779. eine andere Directory-Struktur, ganz zu schweigen von anderen
  780. Computersystemen, wo Pfade m"oglicherweise ganz anders aufgebaut sind.
  781.  
  782.  
  783. %
  784. %----------------------- Environment-Variablen --------------------------
  785. %
  786. \section{Environment-Variablen}\label{environment}
  787.  
  788. Einige grundlegende Einstellungen von \mf\ kann man mit einer Reihe von
  789. En\-vi\-ron\-ment-Variablen t"atigen. In den meisten Shells (z.B. in Gemini)
  790. kann man dies mit dem \verb|setenv|-Befehl angeben, es gibt aber auch
  791. Programme, die bei jedem Einschalten des Rechners das Environment einstellen.
  792.  
  793. \begin{description}
  794. \item[\benv{MF\_RESOURCE} {\it Dateiname\/}] \quad \mf\ sucht seine
  795.    Resource-Datei im AES-Stan"-dard"-pfad (meist das aktuelle Verzeichnis).
  796.    Wenn sie dort nicht gefunden wurde, versucht \mf, seinen eigenen
  797.    Standort (also das Verzeichnis, von dem aus das Programm geladen wurde)
  798.    ausfindig zu machen und sucht dort nach einem \file{METAFONT.RSC}.
  799.    Da es Situationen geben kann, in denen \mf\ seinen Programmnamen
  800.    und Standort nicht findet, wurde die M"oglichkeit geschaffen, den
  801.    Ort der Resource-Datei "uber diese Environment-Variable anzugeben.
  802. \item[\benv{MF\_NOGEM} {\it Zahl\/}] \quad In manchen F"allen kann es
  803.    sinnvoll oder zumindest w"unschenswert sein, wenn \mf\ keine Ausgabe
  804.    in \gem-Fenster macht, sondern nur die \gemdos-Ein/Ausgabe verwendet.
  805.    Wenn diese Environment-Variable auf \verb|"1"| gesetzt ist, oder
  806.    wenn die Extension des Programmnamens \file{.ttp} oder \file{.tos}
  807.    ist (und die Suche nach dem eigenen Namen geklappt hat), wird
  808.    keine einzige AES- oder VDI-Funktion aufgerufen, s"amtliche
  809.    Textein- und ausgaben laufen "uber \gemdos, daf"ur ist allerdings
  810.    auch keine Grafikausgabe mehr m"oglich.
  811. \item[\benv{MF\_TEXTWIND} {\it x y Breite H"ohe\/}] \quad
  812.    Mit dieser Variable kann man die Fensterposition und -gr"o"se des
  813.    Textfensters beim Programmstart angeben. Dabei wird
  814.    eine Folge von maximal vier durch Leerzeichen voneinander getrennten
  815.    Zahlen genannt, die nacheinander die gew"unschte x- und y-Position
  816.    sowie Breite und H"ohe des Fenster-{\em Inneren} in Pixeln bedeuten.
  817.    Werte, die zu klein, zu gro"s oder gar nicht angegeben sind, werden
  818.    mit den Maximalwerten belegt: {\it x} und {\it y} so, da"s die linke
  819.    obere Ecke des Textfensters in der linken oberen Ecke des Desktops
  820.    liegt, {\it Breite\/} und {\it H"ohe\/} mit den Abmessungen des
  821.    Desktops (abz"uglich des Fensterrahmens), h"ochstens aber 25~Zeilen
  822.    bzw.\ 80~Zeichen (es werden Zeichenbreite und -h"ohe des aktuellen
  823.    Systemzeichensatzes zur Berechnung herangezogen).
  824.  
  825.    Zum Beispiel kann man mit \verb|setenv MF_TEXTWIND "0 0 640 200"|
  826.    angeben, da"s das Textfenster anf"anglich zwar links oben steht,
  827.    aber auf dem normalen SM124-Schwarz"-wei"s-Monitor von Atari nur
  828.    die obere H"alfte des Bildschirms ausf"ullt.
  829.  
  830. \item[\benv{MF\_GRAPHWIND} {\it x y Breite H"ohe x-Offset y-Offset\/}] \quad
  831.    F"ur die ersten vier Parameter gilt das f"ur \env{MF\_TEXTWIND} gesagte,
  832.    bezogen auf das Grafikfenster. Die Maximalgr"o"se ist die Gr"o"se des
  833.    Grafikpuffers (640 mal 400 bzw.\ die Werte der n"achsten beiden
  834.    Environment-Variablen).
  835.  
  836.    Die beiden zus"atzlichen Zahlen geben den anf"anglichen Offset der linken
  837.    oberen Ecke des Fensters von der linken oberen Ecke des Fensterinhaltes an.
  838.    Will man beim Programmstart also den Grafik-Puffer ganz links oben sehen,
  839.    h"angt man noch \verb|" 0 0"| oder gar nichts (weil das die
  840.    Standard-Einstellung ist) an den Environment-String an.
  841.    \verb|" 100 200"| sagt, da"s man die 100~Pixel am linken Rand und die
  842.    200~Pixelzeilen am oberen Pufferrand "`"uberspringen"' (d.h. nicht im
  843.    Fenster sehen) will. Wenn die Werte zu gro"s sind, wird der maximal
  844.    m"ogliche Wert genommen.
  845.    Man kann also z.B. bei einem $640\times400$-Puffer die Werte \verb|" 700 500"|
  846.    angeben, und hat dann auf jeden Fall die rechte untere Grafikpuffer-Ecke
  847.    im Fenster.
  848. \item[\benv{MF\_SCREENWIDTH} {\it Zahl\/}]
  849. \item[\benv{MF\_SCREENHEIGHT} {\it Zahl\/}] \quad
  850.    S"amtliche Grafikausgaben gehen zun"achst in einen internen Puffer,
  851.    der im Normalfall $640\times400$~Pixel gro"s ist. Das
  852.    Grafikfenster auf dem Bildschirm stellt einen Ausschnitt aus diesem
  853.    Puffer dar. Wenn man einen Gro"s"-monitor verwendet oder oft sehr gro"se
  854.    \mf-Zeichen erzeugt, kann man den Grafikpuffer vergr"o"sern, indem
  855.    man die Environment-Variablen \env{MF\_SCREENWIDTH} und
  856.    \env{MF\_SCREENHEIGHT} mit der gew"unschten Zahl der Pixel (horizontal
  857.    bzw.\ vertikal) belegt. Der Nachteil dieser Angelegenheit ist der
  858.    gr"o"sere Speicherbedarf ($\hbox{Breite}\times\hbox{H"ohe}/8$~Bytes).
  859.  
  860.    Wenn zus"atzlich in der Kommandozeile die Optionen \verb|-w| oder
  861.    \verb|-h| verwendet wurden, so gelten die dort angegebenen Werte.
  862.  
  863.    {\bf ACHTUNG}: Mit diesen Variablen "andert man ausschlie"slich
  864.    die Ausma"se des Grafikpuffers. Wieviel davon \mf\ f"ur seine
  865.    Grafikausgabe verwendet, ist eine andere Sache. Bei Benutzung der
  866.    Plain-Makros m"ussen deshalb noch die Variablen {\tt screen\_cols} und
  867.    {\tt screen\_rows} ge\-"an\-dert werden (die Werte werden z.B. in
  868.    \file{ATARI.MF} gesetzt), eventuell mu"s auch noch das {\tt openit}-Makro
  869.    ge"andert werden. Am besten liest man nach \file{ATARI.MF} noch
  870.    eine weitere Datei, z.B. \file{LOCAL.MF} ein, in der solche
  871.    "Anderungen untergebracht werden. Letzten Endes sind die im
  872.    "`primitiven \mf-Befehl"' {\tt openwindow} angegebenen Werte
  873.    f"ur \mf s Vorstellung von der Gr"o"se des Grafikpuffers
  874.    verantwortlich.
  875.  
  876.    Technischer Hinweis f"ur "`Insider"': Da {\tt screen\_cols} und
  877.    {\tt screen\_rows} keine in \mf\ eingebauten Variablen sind, kann
  878.    und vor allem darf \mf\ diese nicht von sich aus ver"andern.
  879.    Darum ist es nicht m"oglich, hier automatisch die verwendete
  880.    Grafikpuffer-Gr"o"se einzutragen. Eine Alternative w"are es, die
  881.    \mf-Syntax um zwei weitere eingebaute Variablen zu erweitern, die
  882.    bei Programmstart mit der Puffergr"o"se initialisiert werden. Man
  883.    k"onnte dann "uber {\tt everyjob} die Plain-Variablen
  884.    {\tt screen\_cols} und {\tt screen\_rows} ver"andern. Dummerweise
  885.    gibt es aber keinen Variablennamen, der ausschlie"slich f"ur \mf\
  886.    reserviert w"are. Es kann also bei jedem beliebigen Variablennamen
  887.    passieren, da"s ein Anwender genau diesen Namen schon in seinem
  888.    Programm verwendet hat, womit die Kompatibilit"at nicht mehr
  889.    gew"ahrleistet w"are. Vorschl"age hierzu sind sehr willkommen.
  890. \item[\benv{MF\_EXTCHARSET} {\it Zahl\/}] \quad
  891.    Wenn die Variable \env{MF\_EXTCHARSET} auf \verb|"1"| gesetzt
  892.    wird, dann stellt \mf\ die Umlaute und andere Zeichen oberhalb von 127
  893.    nicht mehr in der Ersatzdarstellung \verb|^^|$xx$ (z.B. \verb|^^84| f"ur
  894.    "`"a"') dar, sondern direkt als Umlaut bzw.\ das entsprechende Sonderzeichen.
  895.    Diese speziellen Zeichen k"onnen allerdings nur in Strings, Kommentaren
  896.    und in Dateinamen verwendet werden, in allen anderen F"allen beschwert
  897.    sich \mf\ "uber ein "`\verb|invalid character|"'. Achtung:
  898.    \env{MF\_EXTCHARSET} wird nur von \inimf\ ausgewertet und in die
  899.    Base-Datei geschrieben. Um das Verhalten von \mf\ zu beeinflussen, mu"s
  900.    mit \inimf\ eine entsprechende Base-Datei erzeugt werden.
  901.  
  902.    Wer also die Umlaute auch in der Ausgabe als solche sehen m"ochte, sollte
  903.    die Environ\-ment-Va\-riable \env{MF\_EXTCHARSET} auf \verb|"1"| setzen, um
  904.    dann mit der \TeX-Shell durch An\-w"ah\-len des Buttons "`\verb|IniMF|"' eine
  905.    neue Base-Datei zu erzeugen. F"ur \mf\ selbst ist es dann v"ollig
  906.    unerheblich, wie \env{MF\_EXTCHARSET} gesetzt ist, solange die richtige
  907.    Base-Datei verwendet wird.
  908.  
  909.    F"ur die Experten hier noch eine etwas genauere Erkl"arung: Normalerweise
  910.    untersucht \mf\ jedes einzelne eingelesene Zeichen, ob es g"ultig
  911.    ist. Nur beim Einlesen von Strings, Dateinamen (nach
  912.    \verb|input|) und Kommentaren wird dieser Test au"ser Kraft gesetzt. In
  913.    diesen drei F"allen kann also praktisch jedes beliebige Zeichen verwendet
  914.    werden, unabh"angig davon, ob mit der Environment-Variablen
  915.    \env{MF\_EXTCHARSET} ein erweiterter Zeichensatz aktiviert wurde oder
  916.    nicht. Erst bei der Ausgabe dieser Zeichen tritt ein Unterschied zu Tage:
  917.    Ein Standard-\mf\ gibt diese Zeichen in einer Ersatzdarstellung aus,
  918.    z.B. ein "`"a"' als "`\verb|^^84|"' (das ist der Hexadezimalcode mit
  919.    zwei \verb|^| davor). Durch Setzen von \env{MF\_EXTCHARSET} kann diese
  920.    Umwandlung unterdr"uckt werden, so da"s auch ein ganz normales "`"a"' wieder
  921.    ausgegeben wird. Allerdings wird diese Ausgabe-Umwandlungstabelle (als
  922.    Teil des Stringpools) in der Base-Datei abgespeichert, die von \inimf\
  923.    erzeugt wird. Ob also ein "`"a"' in der Eingabe als "`"a"' oder als
  924.    "`\verb|^^84|"' in der Ausgabe erscheint, h"angt einzig und allein davon
  925.    ab, wie \env{MF\_EXTCHARSET} gesetzt war, als die Base \file{plain.bse}
  926.    mit \inimf\ (mit dem Kommando \verb|dump|) erzeugt wurde.
  927.  
  928.    Mutige k"onnen sich eine Base-Datei auch direkt mit einem Editor ansehen,
  929.    um herauszufinden, ob sie Umlaute direkt oder in der Ersatzdarstellung
  930.    definiert. Dazu mu"s man nur die 128 Zeichen vor dem String \verb|pencircle|
  931.    anschauen: enthalten sie die Zeichen "`{\tt \c C"u\'e\^a"a} \dots\
  932.    $\sqrt{ }{}^n{}^2{}^3${\tt \={ }}"', sind die Umlaute aktiviert,
  933.    ansonsten stehen dort die Ersatzdarstellungen "`\verb|^^c0^^c1| \dots\
  934.    \verb|^^fe^^ff|"'.
  935. \item[\benv{ARGV}] \quad Wird f"ur die erweiterte Kommandozeile
  936.    (\env{ARGV}-Verfahren) benutzt und sollte vom Benutzer nicht ver"andert
  937.    werden. Eine genaue Beschreibung findet man in
  938.    der Datei \file{EXARG.DOC}, "`GEMDOS Extended Argument
  939.    (ARGV) Specification"' im \file{DOC}-Ordner.
  940. \end{description}
  941.  
  942. %
  943. %--------------------- Rueckgabewerte von METAFONT --------------------------
  944. %
  945. \section{R"uckgabewerte von \protect\mf}
  946.  
  947. Jedes Programm gibt an das aufrufende Programm eine Zahl zur"uck, den
  948. R"uckgabewert. Mit Hilfe dieses Wertes kann man mit den meisten Shells
  949. eventuell aufgetretene Fehler oder besondere Ereignisse w"ahrend des
  950. Programmlaufes erkennen und entsprechend darauf reagieren. Es ist "ublich,
  951. da"s bei einem fehlerfreien Lauf die Zahl Null zur"uckgegeben wird. Da
  952. bei der Erzeugung eines Zeichensatzes eine ganze Menge ungew"ohnliches
  953. passieren kann, wurden f"ur \mf\ sechs weitere Werte definiert ("ubrigens
  954. gelten genau die gleichen Konventionen auch f"ur das \TeX\ von Stefan
  955. Lindner). Im folgenden also eine vollst"andige Liste der Werte, die \mf\
  956. an das aufrufende Programm zur"uckgeben kann:
  957. \begin{description}
  958. \item[0 -- no error] Es lief alles zur vollsten Zufriedenheit von \mf.
  959. \item[1 -- warning] W"ahrend des Programmlaufes wurde mindestens eine
  960.    Warnung ausgegeben, es wurden jedoch keine ernsthaften Fehler gefunden.
  961. \item[2 -- error] Mindestens ein Fehler ist aufgetreten, die Arbeit wurde
  962.    aber korrekt beendet, die erzeugten Daten sind (eventuell beschr"ankt)
  963.    verwendbar.
  964. \item[3 -- fatal error] \mf\ mu"ste wegen eines fatalen Fehlers abgebrochen
  965.    werden, die erzeugten Dateien sind h"ochstwahrscheinlich unvollst"andig.
  966.    Dies kann z.B. passieren, wenn \mf\ keine oder nur eine fehlerhafte
  967.    Base-Datei finden konnte, wenn mehr als 100 normale Fehler aufgetreten
  968.    sind, ein interner Fehler\footnote{ist zwar unwahrscheinlich, aber nie
  969.    v"ollig auszuschlie"sen! In diesem Fall bitte ich um sofortige
  970.    Benachrichtigung zusammen mit einer m"oglichst genauen Fehlerbeschreibung}
  971.    entdeckt wurde oder der interne Speicher (siehe Speicherverwaltung)
  972.    "ubergelaufen ist.
  973. \item[4 -- edit] Der Benutzer hat bei einem aufgetretenen Fehler oder einer
  974.    Unterbrechung (Interrupt) ein `{\tt e}' eingetippt. Wenn mittels der
  975.    `{\tt -e}'-Option ein Speicherbereich spezifiziert wurde, schreibt \mf\
  976.    in diesen den Namen der aktuellen Eingabedatei und die Zeilennummer.
  977. \item[5 -- exit] Wenn der Benutzer in der Fehlerbehandlung ein `{\tt x}'
  978.    eintippt oder w"ahrend einer Eingabe die Escape-Taste bet"atigt, dann wird
  979.    dieser Wert zur"uckgeliefert.
  980. \item[6 -- low memory] Zeigt an, da"s der freie Hauptspeicher (RAM) nicht
  981.    ausreicht, um \mf\ starten zu k"onnen (siehe Speicherverwaltung).
  982.    Abhilfe schafft nur entweder das Entfernen nicht ben"otigter residenter
  983.    Programme oder der Kauf von mehr Speicher.
  984. \end{description}
  985.  
  986.  
  987. %
  988. %------------------------ Speicherverwaltung --------------------------
  989. %
  990. \section{Speicherverwaltung}
  991. Beim Programmstart fordert \mf\ einen konstanten Speicherbereich ("`interner
  992. Speicher"') vom Betriebssystem an, in den es alle Variablen speichern kann.
  993. Dieser Speicher ist in verschiedene Bereiche aufgeteilt (z.B. f"ur Strings,
  994. Eingabepuffer, verschiedene Kernings, "`main memory"' f"ur Zahlen, Pfade,
  995. Pens, Transformationsmatrizen usw.). Wenn das
  996. Betriebssystem diesen Speicher nicht zur Verf"ugung stellen kann (wegen
  997. residenter Programme, RAM-Disk o."a.), wird der R"uckgabewert~6
  998. zur"uckgeliefert.
  999. Wenn \mf\ jedoch w"ahrend der Arbeit feststellt, da"s einer der Bereiche
  1000. im internen Speicher zu klein ist (z.B. bei endlos rekursiven Makros, zu
  1001. vielen Strings, zu langen Zeilen, \dots), so
  1002. meldet es "`\verb|capacity exceeded|"' zusammen mit der Angabe, welcher
  1003. Bereich gesprengt wurde. In diesem Fall kann der Benutzer nur versuchen,
  1004. sparsamer mit den Ressourcen umzugehen (das sagt sich nat"urlich leicht,
  1005. aber es ist kaum m"oglich, hier konkretere Hinweise zu geben; ein paar Tips
  1006. kann man noch im \mf book\cite{mfbook} von Knuth finden). Im
  1007. "au"sersten Notfall kann man auch bei mir anfragen, ob es m"oglich ist,
  1008. den entsprechenden Bereich zu vergr"o"sern; das h"atte jedoch auf jeden
  1009. Fall eine "Anderung des Programmes zur Folge, so da"s man auf diese
  1010. M"oglichkeit nur zur"uckgreifen sollte, wenn man sich sicher ist, da"s
  1011. eine andere L"osung nicht m"oglich oder nicht vertretbar ist.
  1012.  
  1013. F"ur "`Insider"' sind in Tabelle~\ref{tab-konst} die Werte der wichtigsten
  1014. Konstanten von \mf\ angegeben, so wie sie in dieser Implementation
  1015. gew"ahlt wurden. Eine ausf"uhrliche Erkl"a"-rung dieser Variablen findet man
  1016. in~\cite{mfprog}.
  1017. \begin{table}[htbp]\begin{center}
  1018. \begin{tabular}{|l|l|r|}
  1019.    \hline
  1020.    main memory size     & {\it mem\_max = mem\_top}   & 65\,534  \\
  1021.                         & {\it mem\_min = mem\_bot}   & 0        \\
  1022.    number of internals  & {\it max\_internal}         & 100      \\
  1023.    buffer size          & {\it buf\_size}             & 2000     \\
  1024.    error messages       & {\it error\_line}           & 72       \\
  1025.                         & {\it half\_error\_line}     & 42       \\
  1026.    text output width    & {\it max\_print\_line}      & 79       \\
  1027.    graphics screen size & {\it screen\_width}         & variabel (640) \\
  1028.                         & {\it screen\_depth}         & variabel (400) \\
  1029.    input stack          & {\it stack\_size}           & 30       \\
  1030.    number of strings    & {\it max\_strings}          & 2\,500   \\
  1031.    string pool size     & {\it pool\_size}            & 40\,000  \\
  1032.                         & {\it string\_vacancies}     & 8\,000   \\
  1033.    GF file buffer       & {\it gf\_buf\_size}         & 800      \\
  1034.    file names           & {\it file\_name\_size}      & 250      \\
  1035.    TFM header words     & {\it header\_size}          & 100      \\
  1036.    ligature/kern steps  & {\it lig\_table\_size}      & 5000     \\
  1037.    distinct kern amounts& {\it max\_kerns}            & 500      \\
  1038.    {\bf fontdimen} parameters & {\it max\_font\_dimen}& 50       \\
  1039.    symbolic tokens      & {\it hash\_size}            & 2\,100   \\
  1040.    input files          & {\it max\_in\_open}         & 12       \\
  1041.    macro parameters     & {\it param\_size}           & 150      \\ \hline
  1042. \end{tabular}
  1043. \caption{\mf-Konstanten} \label{tab-konst}
  1044. \end{center}\end{table}
  1045.  
  1046. %
  1047. %***************************** INIMF ***************************************
  1048. %
  1049. \chapter{INIMF}\label{kap-inimf}
  1050.  
  1051. Auf der Programmdiskette befinden sich zwei unterschiedliche Versionen von \mf:
  1052. \file{METAFONT.PRG} und \file{INIMF.PRG}. Dabei ist ersteres f"ur die t"agliche
  1053. Arbeit gedacht; \inimf\ wird im allgemeinen nur zur Erzeugung von
  1054. Base-Dateien (\file{.BSE}) ben"otigt. Wer bereits die Format-Dateien
  1055. (\file{.FMT}) von \TeX\ kennt, kann den n"achsten Absatz "uberspringen, denn
  1056. die Base-Dateien bei \mf\ entsprechen genau den Format-Dateien bei \TeX.
  1057.  
  1058. Beim Programmstart m"ussen sehr viele Variablen initialisiert und der
  1059. sogenannte "`String-Pool"' (Datei \file{MF\_POOL}) mit allen
  1060. vordefinierten Strings eingelesen werden. Au"serdem wird fast jeder
  1061. Benutzer zumindest die Makros aus der Datei \file{PLAIN.MF} verwenden,
  1062. da die sogenannten "`primitives"' -- also die Befehle des "`nackten"'
  1063. \mf\ ohne Plain-Makros -- so primitiv sind (wie der Name schon sagt),
  1064. da"s man sehr viel tippen m"u"ste, um nur ein paar einfache Sachen auf
  1065. den Bildschirm zu bringen, geschweige denn einen ganzen Zeichensatz.
  1066. Die "`primitives"' k"onnte man auch als die "`Maschinensprache"' von
  1067. \mf\ bezeichnen. Wenn \mf\ bei jedem Programmstart erst diese ganzen
  1068. Initialisierungen ausf"uhren und Makrodefinitionen einlesen m"u"ste,
  1069. w"urde das recht lange dauern. Darum hat Knuth eine M"oglichkeit
  1070. vorgesehen, diese Initialisierungen und Definitionen nach einmaliger
  1071. Ausf"uhrung in kompakter Form auf Diskette bzw.\ Platte abzuspeichern.
  1072. Diese Datei wird Base-Datei genannt. Wenn man das einmal erledigt hat,
  1073. braucht das Programm in Zukunft nur noch die Base-Datei einzulesen, und
  1074. ist danach sofort startbereit.
  1075.  
  1076. Der Unterschied zwischen \inimf\ und \mf\ besteht im wesentlichen darin,
  1077. da"s bei \mf\ die komplette Variablen-Initialisierung und das Lesen des
  1078. String-Pools entfernt wurde, wodurch es nicht nur schneller, sondern auch
  1079. um einiges k"urzer als \inimf\ ist. Aus diesem Grund braucht es aber 
  1080. unbedingt eine Base-Datei, um arbeiten zu k"onnen. Und zur Erzeugung so
  1081. einer Base-Datei braucht man eben \inimf, auch deshalb, weil der Befehl
  1082. zum Schreiben der Base-Datei ({\tt dump}) im normalen \mf\ gar nicht
  1083. vorhanden ist.
  1084.  
  1085. Ein weiterer Unterschied besteht in der Berechnung einiger "`statistischer"'
  1086. Werte w"ahrend der Arbeit. Wenn man z.B. die Variable {\it tracingstats\/}
  1087. auf einen positiven Wert setzt, so erh"alt man am Ende der LOG-Datei einige
  1088. Informationen dar"uber, wie stark der interne Speicher ausgenutzt wurde.
  1089. Das Mitf"uhren und Aktualisieren solcher Zusatzinformationen kostet jedoch
  1090. Zeit und Speicherplatz, deshalb wurden die entsprechenden Code-Teile in
  1091. \file{METAFONT.PRG} entfernt. Wenn man diese Informationen ben"otigt,
  1092. mu"s man auf \inimf\ zur"uckgreifen, mu"s daf"ur aber etwas mehr Zeit
  1093. und Speicher einkalkulieren. An dieser Stelle sei nochmal betont, da"s
  1094. man im Prinzip auch mit \inimf\ allein ausk"ame; alles, was man mit \mf\
  1095. machen kann, funktioniert auch mit \inimf\ (vorausgesetzt, man hat gen"ugend
  1096. Speicher zur Verf"ugung). Insbesondere kann man auch bei \inimf\ eine
  1097. Base-Datei laden (z.B. durch Eingabe von `{\tt \&plain}' in der Startzeile).
  1098. Lediglich wenn man keine Base-Datei in der Startzeile angibt, l"adt \mf\
  1099. die in der Setup-Datei angegebene {\tt defaultbase}, w"ahrend \inimf\ in
  1100. diesem Fall gar keine Base-Datei l"adt, sondern nur seine Variablen
  1101. initialisiert und den String-Pool liest (nicht aber die Plain-Makros!).
  1102.  
  1103. Abschlie"send nochmal eine kurze Zusammenfassung der Besonderheiten von
  1104. \inimf:
  1105. \begin{itemize}
  1106. \item alle Variablen werden beim Programmstart initialisiert;
  1107. \item der String-Pool wird gelesen (der Dateiname steht in der Setup-Datei
  1108.    unter {\tt poolfile});
  1109. \item der Befehl {\tt dump} erzeugt eine Base-Datei;
  1110. \item wenn in der Startzeile keine Base-Datei angegeben wird, wird auch
  1111.    keine geladen;
  1112. \item es werden zus"atzliche Statistiken gef"uhrt. Diese erh"alt man,
  1113.    wenn $\hbox{\it tracingstats\/}>0$ bzw.\ $\hbox{\it tracingedges\/}>1$;
  1114. \item es wird mehr Hauptspeicher ben"otigt (f"ur zus"atzlichen Programmcode
  1115.    und die statistischen Informationen);
  1116. \item es wird mehr Rechenzeit "`verbraten"'.
  1117. \end{itemize}
  1118.  
  1119. %
  1120. %********************** Erste Schritte mit METAFONT ************************
  1121. %
  1122. \chapter{Erste Schritte mit \protect\mf}
  1123. \label{kap-erste}
  1124.  
  1125. "`Aller Anfang ist schwer"', noch dazu, wenn man so komplexe und flexible
  1126. Programme wie \TeX\ oder \mf\ vor sich hat. Um dem Anf"anger dennoch einen
  1127. ganz kleinen Ausschnitt der M"oglichkeiten von \mf\ zu zeigen und ihm
  1128. gleich am Anfang ein paar kleine Erfolgserlebnisse zu erm"oglichen, sind
  1129. in diesem Kapitel ein paar Beispiele aufgef"uhrt, die am besten gleich am
  1130. Rechner ausprobiert werden sollten. F"ur die ersten beiden Beispiele kann
  1131. \mf\ direkt von der Programmdiskette aus gestartet werden, das dritte
  1132. Beispiel ist am einfachsten mit einem fertig installierten \mf\
  1133. durchzuf"uhren. Bevor ich's vergesse: beenden kann man das Programm durch
  1134. Eingabe von `{\tt end}' oder `{\tt bye}', genauso wie \TeX\ also (wenn
  1135. man mal davon absieht, da"s man in \mf\ kein `\bs' vor die Befehle setzen
  1136. mu"s).
  1137.  
  1138. %
  1139. %-------------------- Beispiel 1: einfache Grafik --------------------------
  1140. %
  1141. \section{Beispiel 1: einfache Grafik}
  1142. Im ersten Beispiel sollen ein paar Pinselstriche auf den Bildschirm gebracht
  1143. werden. Zun"achst mu"s \mf\ gestartet werden, z.B. durch Anklicken von
  1144. \file{METAFONT.PRG} auf dem Desktop (keine Angst, ich erkl"are jetzt nicht,
  1145. wie man mit \gem\ umgeht). Nach der "ublichen Titelzeile meldet sich das
  1146. Programm mit zwei Sternchen. Normalerweise kann man hier angeben, welchen
  1147. Zeichensatz man erzeugen m"ochte, und noch viele andere Dinge. F"ur dieses
  1148. Beispiel jedoch kann sich \mf\ "`ganz entspannt zur"ucklehnen"' und auf
  1149. die Eingabe warten, also tippt man
  1150. \begin{verbatim}
  1151.    \ relax
  1152. \end{verbatim}
  1153. ein. Zun"achst mu"s \mf\ mitgeteilt werden, da"s man die gezeichneten
  1154. Striche gleich auf dem Bildschirm sehen m"ochte. Dies erreicht man durch
  1155. Eingabe von
  1156. \begin{verbatim}
  1157.    screenstrokes;
  1158. \end{verbatim}
  1159. (den Strichpunkt nicht vergessen!).
  1160. Zum Zeichnen einer Linie ist die Angabe von zwei Punkten n"otig, wobei
  1161. die Koordinaten eines Punktes als {\tt (x,y)} eingegeben werden k"onnen:
  1162. \begin{verbatim}
  1163.    draw (10,10)..(50,30);
  1164. \end{verbatim}
  1165. Wenn man mehr als zwei Punkte angibt, wird eine Kurve durch alle Punkte
  1166. gezogen (sogenannte Bezier-Kurven), z.B.
  1167. \begin{verbatim}
  1168.    draw (10, 100)..(50,80)..(90,100);
  1169. \end{verbatim}
  1170. Das ist nat"urlich nur die einfachste Methode, zwei oder mehr Punkte mit
  1171. einer Kurve zu verbinden. \mf\ kann noch sehr viel mehr, z.B. kann man
  1172. f"ur bestimmte Punkte der Kurve eine Richtung vorgeben, mit
  1173. "`Kontrollpunkten"' die Form der Kurve fast beliebig ver"andern,
  1174. Schnittpunkte mit anderen Kurven definieren usw.
  1175. Experimentieren kann man auch mit speziellen Verbindungen, indem man die
  1176. zwei Punkte `..' durch `...' oder `-{}-' ersetzt. Um das Grafikfenster zu
  1177. l"oschen, kann man
  1178. \begin{verbatim}
  1179.    clearit; showit;
  1180. \end{verbatim}
  1181. eingeben. \verb|clearit| l"oscht dabei den Bildpuffer, \verb|showit| bringt
  1182. den gel"oschten Puffer dann auf den Bildschirm.
  1183.  
  1184. %
  1185. %-------------- Beispiel 2: METAFONT als ,,Rechner'' ------------------
  1186. %
  1187. \section{Beispiel 2: \protect\mf\ als "`Rechner"'}
  1188.  
  1189. Im zweiten Beispiel sollen die mathematischen F"ahigkeiten von \mf\ etwas
  1190. ausprobiert werden. Zun"achst kann man in \mf\ (wie in fast jeder anderen
  1191. Programmiersprache auch) Variablen definieren. Man h"atte das erste Beispiel
  1192. auch so eingeben k"onnen:
  1193. \begin{verbatim}
  1194.    x1 = 10;  y1 = 10;  x2 = 50;  y2 = 30;
  1195.    draw (x1, y1)..(x2, y2);
  1196. \end{verbatim}
  1197. Dabei steht das Gleichheitszeichen nicht f"ur eine Zuweisung, sondern f"ur
  1198. eine Gleichung. Der Unterschied wird klar, wenn man z.B. den Wert von $x1$
  1199. um eins erh"ohen will. Schreibt man
  1200. \begin{verbatim}
  1201.    x1 = x1 + 1;
  1202. \end{verbatim}
  1203. so beschwert sich \mf\ zu Recht, da"s diese Gleichung "`inkonsistent"'
  1204. (d.h.\ nicht l"osbar) ist, denn es gibt nun mal keine reelle Zahl, deren
  1205. Wert bei Addition von eins unver"andert bleibt. Will man eine Zuweisung
  1206. erreichen, mu"s man `:=' eingeben. Richtig w"are also in diesem Fall:
  1207. \begin{verbatim}
  1208.    x1 := x1 + 1;
  1209. \end{verbatim}
  1210. Interessanter ist aber wohl die Verwendung von Gleichungen. Lineare
  1211. Gleichungssysteme sind f"ur \mf\ was ganz allt"agliches. Man h"atte die
  1212. obigen Werte also auch so definieren k"onnen:
  1213. \begin{verbatim}
  1214.     x1 +  x2 = 60;
  1215.    3x1 + 2x2 = 130;
  1216. \end{verbatim}
  1217. Man kann leicht nachpr"ufen, da"s \mf\ dieses Gleichungssystem korrekt
  1218. gel"ost hat, wenn man
  1219. \begin{verbatim}
  1220.    show x1, x2;
  1221. \end{verbatim}
  1222. eingibt.
  1223. Interessant ist auch, da"s man nicht `{\tt 3$*$x1}' schreiben mu"s,
  1224. sondern den Malpunkt einfach weglassen kann, so wie es wohl (nicht nur)
  1225. jeder Mathematiker gewohnt ist. Es gibt nur sehr wenige andere
  1226. Programmiersprachen, in denen solche Selbstverst"andlichkeiten m"oglich sind.
  1227. Es bedarf wohl keiner besonderen Erw"ahnung, da"s f"ur \mf\ auch die
  1228. Rechenregel "`Punkt vor Strich"' nichts Unbekanntes ist. Ansonsten bietet
  1229. \mf\ unter anderem noch trigonometrische Funktionen, approximative (d.h.\
  1230. n"aherungsweise) L"osung von nichtlinearen Gleichungssystemen, Vektor-
  1231. und Matrizenrechnung. Durch die M"oglichkeit, Makros zu definieren (was
  1232. im Prinzip den Unterprogrammen oder Prozeduren herk"ommlicher
  1233. Programmiersprachen entspricht), kann man nat"urlich noch beliebig viele
  1234. andere mathematische Rechenverfahren implementieren.
  1235.  
  1236. Wer mehr "uber \mf\ erfahren m"ochte, sollte sich eines der im
  1237. Literaturverzeichnis genannten B"ucher zu Gem"ute f"uhren. Auch das genaue
  1238. Studium fertiger Zeichens"atze oder Logos ist wichtig, anfangen sollte man
  1239. mit einfacheren Dingen wie z.B. das \mf-Logo im Verzeichnis \file{MF\_LOGO}
  1240. oder das DFF-Logo von J"urgen~E.~G"unther, \file{dff.mf}. Auch die vielen
  1241. anderen kleinen Beispiele im \file{inputs}-Ordner sind in der Regel
  1242. relativ gut verst"andlich. An das Studium der CMR-Zeichens"atze sollte man
  1243. sich erst sp"ater heranwagen, denn diese Zeichens"atze sind in einem
  1244. Zeitraum von etlichen Jahren immer wieder verbessert und verfeinert worden,
  1245. so da"s der Blick meistens durch viele Details verstellt wird.
  1246.  
  1247. %
  1248. %-------------- Beispiel 3: Erzeugung eines Zeichensatzes ------------------
  1249. %
  1250. \section{Beispiel 3: Erzeugung eines Zeichensatzes}
  1251. Zum Schlu"s dieses Kapitels soll noch erkl"art werden, wie man mit \mf\
  1252. komplette "`Computer Modern Roman"' Zeichens"atze erzeugen kann. Das ist
  1253. wahrscheinlich eine der h"aufigsten Aufgaben dieses Programmes, schlie"slich
  1254. wollen (und k"onnen) nicht alle Benutzer ihre eigenen Zeichen entwerfen,
  1255. darum greift man in der Regel auf die fertigen Zeichens"atze von Knuth
  1256. zur"uck, die ja auch eine lange Entwicklungszeit hinter sich haben und
  1257. deshalb wenigstens halbwegs professionell aussehen (dennoch hat Knuth nie
  1258. behauptet, ein Typograph zu sein, er hat sich aber bei der Entwicklung der
  1259. Zeichens"atze von einigen Experten dieses Faches beraten lassen).
  1260.  
  1261. Als erstes sollte man nachschauen, ob in der Datei \file{ATARI.MF} ein
  1262. `mode\_def' f"ur den verwendeten Drucker vorhanden ist und wie dieser
  1263. hei"st. Wenn dort der gew"unschte Dru"cker nicht angegeben ist, sollte
  1264. man nach einem `mode\_def' suchen, dessen Auf"|l"osung der ge"-w"unsch"-ten
  1265. m"oglichst nahe kommt oder gleich ist. In diesem Fall wird man wohl fr"uher
  1266. oder sp"ater nicht darum herum kommen, sich einen eigenen Parametersatz zu
  1267. definieren. Vorher sollte man aber bei mir oder Stefan Lindner anrufen,
  1268. ob vielleicht inzwischen schon fertige Parameter existieren, es kommen fast
  1269. t"aglich neue hinzu.
  1270.  
  1271. Als Beispiel soll hier der Zeichensatz `{\tt cmr10}' in 1,44-facher
  1272. Vergr"o"serung f"ur einen Laserdrucker erzeugt werden, soda"s er in einem
  1273. \TeX-Dokument mit
  1274. \begin{verbatim}
  1275.    \font\bigtenrm = cmr10 scaled \magstep2
  1276. \end{verbatim}
  1277. angesprochen werden kann. Zum "Uben oder schnellen Ausprobieren kann man
  1278. alternativ auch einen kleinen Zeichensatz wie `{\tt logo10}' erzeugen,
  1279. dazu mu"s im folgenden Text nur {\tt cmr} durch {\tt logo} ersetzt werden.
  1280.  
  1281. \subsection{Erzeugen der Base-Datei}
  1282. Zun"achst mu"s man daf"ur sorgen, da"s eine geeignete Base-Datei vorhanden
  1283. ist. F"ur dieses Beispiel gen"ugen die Plain-Makros, also braucht man
  1284. die Datei \file{PLAIN.BSE}. Es ist zwar auf der Programmdiskette schon eine
  1285. fertige Datei vorhanden, dennoch soll hier kurz erl"autert werden, wie diese
  1286. Datei erzeugt wurde (schlie"slich fallen solche Dateien ja nur "au"serst
  1287. selten vom Himmel).
  1288.  
  1289. Wie in Kapitel~\ref{kap-inimf} bereits erw"ahnt wurde, ben"otigt man
  1290. f"ur diese Aufgabe das Programm \inimf. Man startet also \file{INIMF.PRG}
  1291. und gibt in der Startzeile (durch `$**$' gekennzeichnet)
  1292. \begin{verbatim}
  1293.    plain
  1294. \end{verbatim}
  1295. ein. Daraufhin werden die Plain-Makros geladen und im Speicher abgelegt.
  1296. Wenn wieder ein `$*$' erscheint, ist \mf\ zu weiteren Untaten bereit.
  1297. Jetzt kann man die eigenen Dateien laden, die damit bei jedem Start von
  1298. \mf\ automatisch mitgeladen werden. F"ur den Anfang also mal
  1299. \begin{verbatim}
  1300.    input atari
  1301. \end{verbatim}
  1302. um einige Werte wie Auf"|l"osung, Strichst"arke etc.\ f"ur ein paar "ubliche
  1303. Ausgabeger"ate (z.B. {\tt stscreen}, {\tt stlaser} und {\tt starnl}) zu
  1304. definieren.
  1305. F"ur den Anfang gen"ugt das mal, man kann \inimf\ mitteilen, da"s
  1306. es nun seinen Speicher "`dumpen"' soll:
  1307. \begin{verbatim}
  1308.    dump
  1309. \end{verbatim}
  1310. Zur Belohnung erh"alt man ein paar neue Dateien:
  1311. \begin{description}
  1312. \item[\file{PLAIN.BSE}]  in dem Ordner, der in der Setup-Datei unter
  1313.    {\tt dumppath} angegeben wurde. Das ist die Base-Datei, in der alle
  1314.    wichtigen Daten f"ur \file{METAFONT.PRG} enthalten sind.
  1315. \item[\file{PLAIN.LOG}]  im {\tt logpath}-Ordner. In diese Datei hat \inimf\
  1316.    s"amtliche Bild"-schirm-Aus"-ga"-ben und noch einiges mehr mitprotokolliert,
  1317.    damit man sich auch sp"ater noch ansehen kann, was das Programm alles
  1318.    angestellt hat.
  1319. \end{description}
  1320.  
  1321. \subsection{Die Startzeile}
  1322. Diese Base-Datei kann man nun mit jedem der beiden Programme (\inimf\
  1323. und \mf) ruckzuck einladen, indem man in die Startzeile
  1324. \begin{verbatim}
  1325.    &plain
  1326. \end{verbatim}
  1327. (man beachte das `\verb|&|'!) eintippt. Dadurch wird die Datei
  1328. \file{PLAIN.BSE} geladen, und man hat alles wieder so, wie es vor dem
  1329. Eintippen von \verb|dump| war.
  1330.  
  1331. Jetzt wird es aber doch allerh"ochste Zeit, da"s genau erkl"art wird, was
  1332. die Startzeile ist, und welche Besonderheiten sie aufweist. Die Startzeile
  1333. ist die erste Zeile, die man f"ur \mf\ eingibt. Eine M"oglichkeit besteht
  1334. bereits in der Kommandozeile {\em nach\/} den Optionen. Wenn dort nichts
  1335. eingegeben wurde, meldet sich das Programm mit zwei Sternchen (`$**$') am
  1336. Zeilenanfang, um anzudeuten, da"s es die Startzeile erwartet (in den
  1337. normalen Zeilen steht nur {\em ein\/} Sternchen am Zeilenanfang). In dieser
  1338. Startzeile mu"s nun angegeben werden, welche Base-Datei geladen werden soll
  1339. (bei \inimf\ optional), au"serdem leitet \mf\ aus dieser Zeile den
  1340. "`Jobname"' ab, nach dem s"amtliche Ausgabedateien (GF-, TFM- und LOG-Datei)
  1341. benannt werden. Die Besonderheiten der Startzeile sind:
  1342. \begin{itemize}
  1343. \item Eine Base-Datei l"a"st sich durch Voranstellen eines `{\tt \&}' vor dem
  1344.    Dateinamen laden (z.B. `{\tt \&plain}' l"adt die Base-Datei
  1345.    `\file{PLAIN.BSE}'). Wenn eine Base-Datei angegeben ist, mu"s diese
  1346.    auf jeden Fall am Anfang der Startzeile stehen.
  1347. \item Eingabedateien (\verb|*|\file{.MF}) kann man einfach durch Angabe des
  1348.    Datei"-namens laden, w"ah"-rend man in den normalen \mf-Eingabezeilen
  1349.    `{\tt input \it name\/}' schreiben m"usste (z.B. `{\tt cmr10}' l"adt die
  1350.    Eingabedatei `\file{CMR10.MF}').
  1351. \item Wenn man in dieser Zeile andere Sachen eingeben m"ochte, z.B.
  1352.    Initialisierungen irgendwelcher Variablen, bevor eine Datei gelesen
  1353.    wird, mu"s man mit einem `\verb|\|' auf den normalen
  1354.    Eingabemodus umschalten. Danach kann man alles machen, was man
  1355.    normalerweise (in `\verb|*|\file{.MF}'-Eingabedateien oder in Zeilen mit nur
  1356.    einem `$*$' am Anfang) machen kann. "Ublicherweise gibt man hier das
  1357.    Ausgabeger"at und eventuelle Vergr"o"serungen an, z.B.
  1358.    \begin{verbatim}
  1359.    \ mode=stlaser; mag=1.44;
  1360. \end{verbatim}
  1361.    setzt Auf"|l"osung etc.\ auf die Werte, die im `{\tt mode\_def stlaser}'
  1362.    in der Datei \file{ATARI.MF} angegeben wurden, und vergr"o"sert den
  1363.    Zeichensatz auf 1.44-fache Gr"o"se. Will man mit diesen Werten einen
  1364.    Zeichensatz erzeugen, so m"ussen die Zuweisungen nat"urlich {\em vor\/}
  1365.    dem Laden der Source\-datei ausgef"uhrt werden (es n"utzt nichts, wenn
  1366.    \mf\ zuerst den ganzen Zeichensatz erzeugt und erst hinterher erf"ahrt,
  1367.    da"s dieser vergr"o"sert werden sollte). Da man nach Eingabe
  1368.    des \verb|\| nicht mehr im "`Startzeilen-Modus"' ist, mu"s man die
  1369.    Sourcedatei nun (wie "ublich) mit \verb|input| laden.
  1370. \item Anhand der Startzeile bestimmt \mf\ den Jobnamen. Dabei richtet sich
  1371.    \mf\ nach der ersten Datei, die eingelesen wird (ohne Beachtung einer
  1372.    eventuell angegebenen Base-Datei), also entweder der erste Dateiname
  1373.    ohne einem `{\tt \&}' davor, oder (falls vor dem `\verb|\|' keine
  1374.    {\tt MF}-Datei eingelesen wird) die erste Datei, die nach einem
  1375.    `\verb|\|' mit {\tt input} eingelesen wird. Wenn mit den Kommandos
  1376.    in dieser Zeile "uberhaupt keine \file{MF}-Datei eingelesen wird, 
  1377.    dann setzt \mf\ den Jobname auf `\file{MFPUT}'. Wenn man also
  1378. \begin{verbatim}
  1379.    &plain f1 \ input f2
  1380.    input f3
  1381. \end{verbatim}
  1382.    eingibt, hei"sen die Ausgabedateien `\file{F1.}xxx\file{GF}',
  1383.    `\file{F1.LOG}' und `\file{F1.TFM}', weil `\file{F1.MF}' die erste Datei
  1384.    ist, die gelesen wird (die Base-Datei wird nicht mitgerechnet, sonst
  1385.    hie"se ja alles `\file{PLAIN.}xxx').
  1386. \end{itemize}
  1387. Wenn man in der ersten Zeile kein Ausgabeger"at spezifiziert, dann verwendet
  1388. \mf\ `\verb|mode = proof;|', was zwar zum Ausprobieren ganz nett aussieht
  1389. (eigentlich sollte sich dieses Schauspiel niemand entgehen lassen, man sieht
  1390. die Zeichen mal richtig gro"s und in hervorragender Sch"arfe auf dem Monitor),
  1391. aber f"ur einen Ger"atetreiber in der Regel nicht so ideal ist (schon allein
  1392. wegen der Auf"|l"osung von 2601.72 dpi). Also mu"s man das gew"unschte Ger"at
  1393. explizit angeben, indem man in der ersten Zeile vor dem Namen der
  1394. Eingabedatei `{\tt mode=stlaser;}' angibt. Damit nun aber \mf\ nicht nach
  1395. der Eingabedatei `{\tt mode}' sucht, ist vor der Gleichung noch ein
  1396. `\verb|\|' n"otig. Wenn keine Vergr"o"serung angegeben wird, ist sie
  1397. automatisch 1. Allgemein wird die erste Zeile also ungef"ahr so aussehen:
  1398. \begin{verbatim}
  1399.    &<Base> \ mode=<Geraet>; mag=<Vergroesserung>; input <Datei>;
  1400. \end{verbatim}
  1401. wobei f"ur die Namen in spitzen Klammern entsprechende Werte einzusetzen
  1402. sind (die Klammern tippt man nat"urlich nicht mit ein).
  1403.  
  1404. \subsection{Die "`Sch"opfung"'}
  1405. Jetzt steht alles bereit, um den Zeichensatz zu erzeugen. Man starte also
  1406. \file{METAFONT.PRG} und gebe als Startzeile
  1407. \begin{verbatim}
  1408.    &plain \ mode=stlaser; mag=1.44; input cmr10
  1409. \end{verbatim}
  1410. ein. Nach einigen Minuten ist \mf\ fertig, und man hat ein paar weitere
  1411. Dateien auf der Diskette / Platte:
  1412. \begin{description}
  1413. \item[\bfile{CMR10.432}] sollte eigentlich \file{CMR10.432GF} hei"sen, aber
  1414.    \tos\ kann
  1415.    halt leider nur drei Zeichen in der Extension speichern. Die "`krumme"'
  1416.    Zahl 432 erh"alt man, wenn man die Ger"ate-Auf"|l"osung von 300 dpi
  1417.    (dots per inch) mit der Vergr"o"serung (in diesem Fall 1.44)
  1418.    multipliziert. Das ist also nun die GF-Datei, in der die Beschreibung
  1419.    der vielen Zeichen drin ist. Wenn man einen Zeichensatz f"ur ein anderes
  1420.    Ger"at generiert hat, steht nat"urlich nicht 432, sondern die gew"ahlte
  1421.    Auf"|l"osung (Vergr"o"serung nicht zu vergessen) in der Extension,
  1422.    z.B. \file{CMR10.96G} (`\file{.96GF}' auf 3 Zeichen verk"urzt!) f"ur eine
  1423.    GF-Datei mit 96 dpi und Vergr"o"serung 1.
  1424. \item[\bfile{CMR10.LOG}] auch hier hat \mf\ wieder fein s"auberlich
  1425.    mitprotokolliert, was es alles gemacht hat.
  1426. \item[\bfile{CMR10.TFM}] diese Datei ben"otigt \TeX, um zu erfahren, wie
  1427.    gro"s die einzelnen Zeichen sind (wie sie tats"achlich aussehen,
  1428.    interessiert \TeX\ gar nicht, das geht einzig und allein den
  1429.    Druckertreiber etwas an). TFM steht f"ur "`\TeX\ Font Metric File"'.
  1430. \end{description}
  1431.  
  1432. Da die meisten Ger"atetreiber sogenannte PK-Files ("`Packed Font Files"')
  1433. bevorzugen, mu"s man nun noch die GF-Datei in eine PK-Datei umwandeln
  1434. (man k"onnte auch komprimieren sagen). Man startet also \file{GFTOPK.TTP}
  1435. und gibt diesem den Namen der GF-Datei und der gew"unschten PK-Datei,
  1436. also z.B.
  1437. \begin{verbatim}
  1438.    cmr10.432 \prtfonts\res300.slm\mag____1.440\cmr10.pk
  1439. \end{verbatim}
  1440. als Kommandozeile mit auf den Weg (zum Zwecke der Demonstration sei hier
  1441. mal davon ausgegangen, da"s die GF-Datei im aktuellen Ordner und
  1442. die Zeichens"atze f"ur die Druckertreiber im Ordner \verb|\prtfonts|
  1443. stehen, wobei letzterer entsprechend den Konventionen von Stefan Lindner's
  1444. Druckertreiber-Familie aufgebaut ist). Damit ist der Zeichensatz fertig und steht
  1445. zum Ausdrucken bzw.~Betrachten auf dem Bildschirm bereit.
  1446.  
  1447. %
  1448. %**************************** Zukunftsmusik ********************************
  1449. %
  1450. \chapter{Zukunftsmusik}
  1451. Die Arbeit an \mf\ ist noch nicht abgeschlossen, da gibt es noch
  1452. viel zu viele Ideen, was man besser und sch"oner machen k"onnte, und
  1453. der eine oder andere Fehler l"a"st sich vermutlich auch noch in
  1454. der Benutzeroberfl"ache finden. Sogar im \mf\ selbst kann man heute
  1455. noch Fehler finden, man versuche nur mal, in einer Feld-, Wald- und
  1456. Wiesen-Implementation das \inimf\ zu starten, keine Base-Datei zu
  1457. laden, und \verb|\showstats| einzugeben. In 90\% aller Versionen
  1458. (nat"urlich nicht in dieser) wird man "`{\tt Memory usage 23\&-1}"'
  1459. zur Antwort bekommen. Und $-1$ verbrauchte Speicherzellen ist
  1460. schon etwas ungew"ohnlich (keine Sorge, der Fehler ist inzwischen
  1461. an den "`Chef"' weitergegeben).
  1462.  
  1463. Da"s bei der Texteingabe kein Cursor zu sehen ist, st"ort manchmal schon
  1464. gewaltig. Irgendwann wird auch das sicherlich in den Griff zu bekommen
  1465. sein. Die Gedanken kreisen da allerdings viel weiter: wenn man die
  1466. Eingabe "uber allgemeine Textfenster (wie sie heutzutage in jeder
  1467. besseren grafischen Benutzeroberfl"ache enthalten sind, z.B. in X oder
  1468. in SunView) gestalten w"urde, h"atte man enorm viel mehr M"oglichkeiten,
  1469. angefangen bei einfachen Editorkommandos (Cursor-Bewegung, Zeichen l"oschen)
  1470. bis hin zu Cut/Paste-Operationen "uber mehrere Fenster (und damit mehrere
  1471. Dateien) hinweg. Eventuell k"onnte man das auch "uber h"ohere XACC-Levels
  1472. in Zusammenhang mit einem einfachen Accessory-Editor, der auch das XACC-%
  1473. Protokoll versteht, erledigen. Wer einen solchen Editor kennt, der noch
  1474. dazu frei kopierbar sein sollte (PD- oder Shareware), m"oge mich bitte
  1475. gleich benachrichtigen.
  1476.  
  1477. Sch"on w"are es auch, wenn man die Setup-Datei von \mf\ aus "andern k"onnte.
  1478. Ich stelle mir da einen Eintrag in der Men"uleiste vor, "ahnlich wie bei
  1479. vielen anderen \gem-Programmen, wo man die Standard-Pfade angeben und
  1480. anschlie"send abspeichern kann.
  1481.  
  1482. Wenn die Larc-Bibliothek mal ausgereift ist, dann wird sicherlich
  1483. auch in \mf\ die Behandlung der archivierten Dateien konsistenter
  1484. und nat"urlicher werden. Letzten Endes ist ein Larc-Archiv ja
  1485. nichts anderes als ein Directory, komplett mit Unterverzeichnissen
  1486. und Dateien, und so sollte auch der Benutzer keinen Unterschied
  1487. machen m"ussen (leider l"a"st sich das nicht so einfach auf den
  1488. Desktop ausweiten, denn da mu"s der Benutzer immer noch selbst
  1489. die entsprechenden Archivier-Programme aufrufen, anstatt sie wie
  1490. normale Directories "uber Desktop-Fenster zu behandeln). In diesem
  1491. Zusammenhang ist auch nicht einzusehen, warum \mf\ keine mit Pfad
  1492. abgespeicherten Dateien in den Archiven duldet.
  1493.  
  1494. Ein sicher sehr interessantes, aber auch aufwendiges Projekt w"are, \mf\
  1495. mit der hervorragenden Benutzeroberfl"ache von {\mc SMALLTALK-80}
  1496. zu verbinden. Ein erster Ansatzpunkt dazu ist die M"oglichkeit, C-Funktionen
  1497. als "`primitive"' Methoden zu {\mc SMALLTALK-80} dazulinken zu k"onnen
  1498. (und im Prinzip ist \mf\ nichts anderes als eine C-Funktion namens
  1499. {\tt main}). Benutzern mit weniger als 4 MByte RAM w"urde das allerdings
  1500. vermutlich nicht sehr viel bringen (h"ochstens den Wunsch nach mehr
  1501. Speicher).
  1502.  
  1503. %
  1504. %
  1505. %
  1506. \begin{thebibliography}{9}
  1507.  
  1508. \bibitem{mfbook}
  1509.    Knuth, Donald E. {\it The \mf book}, Computers and Typesetting Vol.~C,
  1510.    Addison-Wesley, Reading (Massachussets) 1986. 361 Seiten.
  1511.  
  1512. Die definitive Anleitung zu \mf. Auf dieses Buch kann wohl nur
  1513. verzichten, wer ausschlie"slich "`Computer Modern Roman"'-Zeichens"atze
  1514. f"ur verschiedene Ausgabeger"ate erzeugt.  Wer mit den Parametern etwas
  1515. experimentieren will oder eigene Grafiken oder gar Zeichens"atze
  1516. erzeugen will, sollte sich das \mf book zulegen, denn da steht
  1517. praktisch alles drin, was der Benutzer wissen mu"s.
  1518.  
  1519. \bibitem{mfprog}
  1520.    Knuth, Donald E. {\it \mf: The Program}, Computers and Typesetting
  1521.    Vol.~D, Addison-Wesley, Reading (Massachussets) 1986. 560 Seiten.
  1522.  
  1523. Wer es ganz genau wissen will, kann hier den Original-Sourcecode in
  1524. {\mc WEB} nachlesen. Dieses Buch ist die Grundlage meiner C-Version von
  1525. \mf.
  1526.  
  1527. \bibitem{texprog}
  1528.    Knuth, Donald E. {\it \TeX: The Program}, Computers and Typesetting
  1529.    Vol.~B, Addison-Wesley, Reading (Massachussets) 1984. 594 Seiten.
  1530.  
  1531. Der Sourcecode von \TeX\ f"ur alle, die auch dort hinter die Kulissen
  1532. schauen wollen. Ebenfalls in der Programmier- und Dokumentationssprache
  1533. {\mc WEB} geschrieben.
  1534.  
  1535. \bibitem{cm-typefaces}
  1536.    Knuth, Donald E. {\it Computer Modern Typefaces}, Computers and
  1537.    Typesetting Vol.~E, Addison-Wesley, Reading (Massachussets) 1986.
  1538.    590 Seiten.
  1539.  
  1540. Hier sind die ganzen \mf-Programme f"ur die komplette Computer Modern
  1541. Schriftenfamilie dokumentiert, zusammen mit vielen Probeausdr"ucken (proofs).
  1542. Man kann dieses Buch also als Nachschlagewerk, als Bilderbuch oder auch als
  1543. Lehrbuch f"ur beispielhafte \mf-Programmierung ansehen.
  1544.  
  1545. \bibitem{web}
  1546.    Knuth, Donald E. {\it The WEB System of Structured Documentation},
  1547.    Stanford Computer Science Report No.\ 980, Stanford University,
  1548.    Department of Computer Science, Stanford (California) 1983. 206 Seiten.
  1549.  
  1550. Anleitung zu {\mc WEB} und Sourcecode zu {\mc WEAVE} und {\mc TANGLE}, die
  1551. zusammen das {\mc WEB}-System bilden.
  1552.  
  1553. \bibitem{pandora}
  1554.    Billawala, Nazneen N. {\it Metamarks: Preliminary studies for a
  1555.    Pandora's Box of shapes}, Stanford Computer Science Report No.~1256,
  1556.    Stanford University, Department of Computer Science, Stanford
  1557.    (California) 1989. Erh"altlich von der \TeX\ Users Group.
  1558.  
  1559. Das Buch zu den Pandora-Fonts. Dieses Buch ist {\bf keine} Einf"uhrung
  1560. in \mf, sondern mehr ein Bilderbuch, das die Ergebnisse einiger
  1561. Experimente mit \mf\ zeigt. Das Herausragende an den Pandora-Fonts ist,
  1562. da"s sie von Anfang an f"ur und vor allem mit \mf\ entwickelt und nicht
  1563. wie die meisten anderen Zeichens"atze (cmr eingeschlossen) erst
  1564. nachtr"aglich f"ur \mf\ zurechtgebogen wurden. Wer die Pandora-Fonts
  1565. genauer studieren will, findet in diesem Buch einige Hinweise und die
  1566. grundlegenden Elemente (Serifen, Kreise, B"ogen, Bowls), aus denen die
  1567. Zeichen aufgebaut sind. Den Hauptteil des Buches machen
  1568. Parametervariationen und ihre Auswirkungen auf das Aussehen der
  1569. Zeichenelemente aus.
  1570.  
  1571. \bibitem{kopka90}
  1572.    Kopka, Helmut. {\it \LaTeX\ -- Erweiterungsm"oglichkeiten},
  1573.    2. Aufl., Addison-Wesley, Bonn 1991.
  1574.  
  1575. Obwohl es in diesem Buch haupts"achlich um \LaTeX\ geht, enth"alt es
  1576. auch eine knapp hundertseitige Kurzeinf"uhrung in \mf. Momentan ist dies
  1577. das einzige deutsche Buch, das \mf\ behandelt. Angefangen bei den
  1578. einzelnen Elementen des \mf-Systems (Programm-Umgebung) "uber die
  1579. wichtigsten Grundlagen von \mf\ und seiner Programmiersprache bis
  1580. hin zur Erzeugung eines Firmenlogos vermittelt Kopka das n"otige
  1581. Wissen, um fertige \mf-Programme in ihrer Grundstruktur erfassen
  1582. und eigene kleinere Arbeiten selbst erledigen zu k"onnen. Die ideale
  1583. Vorbereitung f"ur das Werk des "`Meisters"', das \mf book.
  1584. \end{thebibliography}
  1585.  
  1586. \end{document}
  1587.